[英]Chat program network freezing?
好的,所以我一直在编写此聊天的乐趣,并且遇到了一些麻烦。 我对插座一点都不满意,有人可以帮忙连接这些插座吗?
Client.java:
try {
Socket server = new Socket("jakebobjo.com", 1234);
InputStream in = server.getInputStream();
OutputStream out = server.getOutputStream();
PrintWriter pout = new PrintWriter(out, true);
pout.println(username + ": " + input.getText() + "\n");
BufferedReader bin = new BufferedReader(new InputStreamReader(in));
String responce = bin.readLine();
server.close();
} catch (IOException ex) {
System.out.println("Error connection to host.");
}
Server.java:
try {
ServerSocket listener = new ServerSocket(1234);
Socket client = listener.accept();
InputStream in = client.getInputStream();
OutputStream out = client.getOutputStream();
PrintWriter pout = new PrintWriter(out, true);
pout.println(username + ": " + input.getText() + "\n");
client.close();
listener.close();
} catch (IOException ex) {
System.out.println("Error connecting to client.");
}
当这些程序触发idk时,程序只会冻结:/
您的程序处于冻结状态,因为在这两个文件中,您都要求应用程序将消息发送到另一端而不在任何一侧接受消息。序列应类似于这两个消息中的任何一个:
客户端发送消息-服务器收到消息
要么
服务器发送消息-客户端回执消息
在您的情况下,没有顺序导致死锁,并且您的应用程序被冻结。 将客户端文件中的语句顺序更改为:
BufferedReader bin = new BufferedReader(new InputStreamReader(in));
String responce = bin.readLine();
pout.println(username + ": " + input.getText() + "\n");
注意:
2)首先启动服务器端程序,然后再启动客户端程序。
1)MoreOver在服务器端您已关闭套接字,而未收到客户端的消息。 因此,在客户端从服务器接收消息后,当客户端尝试向服务器发送消息时,程序将停止抛出Exception。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.