繁体   English   中英

聊天程序网络冻结?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM