Я пишу свою первую клиентскую/серверную программу 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). Большое спасибо за любую помощь.
Обновление: я действительно нахожусь в кампусе, и кажется, что он, вероятно, не позволяет мне использовать этот случайный порт. Любые предложения по выяснению, какой порт я могу использовать, или порт, который более чем вероятно разрешен?