Java 聊天程序网络冻结?

Java 聊天程序网络冻结?,java,sockets,networking,freeze,Java,Sockets,Networking,Freeze,好的,所以我一直在编这个聊天程序是为了好玩,在路上遇到了一些事情。 我对插座一点也不擅长,有人能帮我连接一下吗 Client.java: try { Socket server = new Socket("jakebobjo.com", 1234); InputStream in = server.getInputStream(); OutputStream out = server.getOutputStream(); PrintWriter pout = ne

好的,所以我一直在编这个聊天程序是为了好玩,在路上遇到了一些事情。 我对插座一点也不擅长,有人能帮我连接一下吗

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时,程序会冻结。为什么://p>您的程序会冻结,因为在这两个文件中,您都要求应用程序向另一方发送消息,而不接受任何一方的消息。顺序应与这两个文件中的任意一个类似:

客户端发送消息-服务器接收消息

服务器发送消息-客户端接收消息

。在您的情况下,没有遵循导致死锁的顺序,并且您的应用程序被冻结。将客户端文件中语句的顺序更改为:

BufferedReader bin = new BufferedReader(new InputStreamReader(in));
String responce = bin.readLine();
pout.println(username + ": " + input.getText() + "\n");
注意:
2)先启动服务器端程序,然后再启动 客户端程序
1)此外,在服务器端,您已关闭套接字,但未收到来自客户端的消息。因此,在客户端接收到来自 服务器,当它试图向服务器发送消息时,程序将停止抛出 例外


您必须在单独的线程中运行ServerSocket和客户端socket。Java中的套接字正在阻止套接字,当程序尝试读/写时,会在运行时阻止程序。虽然不起作用,但还是要感谢,因为这很有意义,我只是想弄清楚。。英雄联盟