Я пишу свою первую программу клиент / сервер на Java, которая просто устанавливает соединение с сервером, отправляет ему предложение, а сервер отправляет предложение с заглавной буквы. Это на самом деле пример прямо из книги, и он хорошо работает, когда я запускаю клиент и сервер на одной машине и использую localhost для адреса сервера. Но когда я помещаю клиентскую программу на другой компьютер, она перестает работать и никогда не устанавливает соединение с сервером. Я не уверен, почему это и делает своего рода неудачным создание вашей первой клиент-серверной программы, и я не могу использовать ее на двух разных машинах. Вот код клиента:
import java.io.*;
import java.net.*;
public class TCPClient {
public static void main(String argv[]) throws Exception {
String sentence;
String modifiedSentence;
BufferedReader inFromUser = new BufferedReader(new InputStreamReader(System.in));
Socket clientSocket = new Socket("localhost", 6789);
DataOutputStream outToServer = new DataOutputStream(clientSocket.getOutputStream());
BufferedReader inFromServer = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
sentence = inFromUser.readLine();
outToServer.writeBytes(sentence + '\n');
modifiedSentence = inFromServer.readLine();
System.out.println(modifiedSentence);
clientSocket.close();
}
}
Вот код сервера:
import java.io.*;
import java.net.*;
public class TCPServer {
public static void main(String args[]) throws Exception {
String clientSentence;
String capitalizedSentence;
ServerSocket welcomeSocket = new ServerSocket(6789);
while(true) {
Socket connectionSocket = welcomeSocket.accept();
BufferedReader inFromClient = new BufferedReader(new InputStreamReader(connectionSocket.getInputStream()));
DataOutputStream outToClient = new DataOutputStream(connectionSocket.getOutputStream());
clientSentence = inFromClient.readLine();
capitalizedSentence = clientSentence.toUpperCase() + '\n';
outToClient.writeBytes(capitalizedSentence);
}
}
}
Единственное, что я изменяю, когда запускаю его на двух разных машинах, это то, что клиентская программа создает свой сокет с IP-адресом машины с помощью серверной программы (которую я получил с whatismyipaddress.com). Большое спасибо за любую помощь.
Обновление: я действительно нахожусь в университетском городке, и кажется, что это, вероятно, не позволяет мне использовать этот случайный порт. Любые предложения по выяснению, какой порт я могу использовать и / или порт, который более чем допустим?