我正在写我的第一个Java客户端/服务器程序,它只是建立与服务器的连接发送一个句子,服务器将句子全部大写。这实际上是书中的一个例子,当我在同一台计算机上运行客户端和服务器并使用localhost作为服务器地址时,它运行良好。但是当我将客户端程序放在另一台计算机上时,它会超时并且永远不会与服务器建立连接。我不确定这是为什么,它是制造你的第一个客户端/服务器程序,而实际上不能在两台不同的机器上使用它。下面是客户端代码:简单的Java客户端/服务器程序
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得到)的机器。非常感谢您的帮助。
更新:我确实在一个校园里,似乎它可能不允许我使用那个随机端口。任何关于找出我可以使用的端口和/或可能允许的端口的建议?
并且你可以通过这个IP地址连接到服务器除此以外? (使用ping/telnet/traceroute /等) – McDowell 2010-01-29 21:05:57
在尝试调试程序之前,可能尝试并确保可以先ping其他计算机。这样你就知道网络不是责任。 – 2010-01-29 21:07:16
我试过ping,它工作。 – Anton 2010-01-29 21:15:47