我正在学习Java套接字编程,而且我非常积极,我的代码是正确的,但由于某种原因服务器和客户端不通信。我不太确定他们是否连接。这是我迄今为止所做的。Java客户端/服务器套接字问题
服务器:
public static void main(String[] args) throws Exception
{
Main_Server server = new Main_Server();
server.run();
}
public void run() throws Exception
{
ServerSocket server = new ServerSocket(444); //Port
Socket sSocket = server.accept();
BufferedReader bfr = new BufferedReader(new InputStreamReader(sSocket.getInputStream()));
String clientMessage = bfr.readLine();
System.out.println("Client: "+clientMessage);
if (clientMessage != null)
{
PrintStream ps = new PrintStream(sSocket.getOutputStream());
ps.println("Message Received.");
}
}
客户:
public static void main(String[] args) throws Exception
{
Client_One client = new Client_One();
client.run();
}
public void run() throws Exception
{
Socket clientSocket = new Socket("localhost", 444);
PrintStream ps = new PrintStream(clientSocket.getOutputStream());
ps.println("Hello, server.");
BufferedReader bfr = new BufferedReader(new InputStreamReader(clientSocket.getInputStream()));
String serverMessage = bfr.readLine();
System.out.println("Server: "+serverMessage);
}
于是我运行服务器和第一客户端后(我目前使用NetBeans IDE 8.1)。程序运行,只是坐在那里,但之后没有任何反应。为什么是这样?我只有两个空的控制台。 谢谢你的时间。
看起来乍一看。 444是一个特权端口号,使用大于1023的端口来确保这不是问题。 (Davide的答案听起来像是一个可能的解决方案。) – markspace
@markspace谢谢你,我已经尝试了4444。但再次感谢您的提示:) –