gpt4 book ai didi

Java TCP 客户端服务器挂了?

转载 作者:可可西里 更新时间:2023-11-01 02:44:39 25 4
gpt4 key购买 nike

我目前很难理解为什么我的代码不起作用。我在下面包含了我的客户端和服务器代码。我发现我的问题发生在 while 循环的某个地方,但我不确定如何修复它以免卡住。我在论坛上搜索了一段时间,有人说添加换行符可以解决问题,但我仍然遇到问题。

我的主要问题是如何避免进程卡住和无法正常通信。任何人都可以指出我正确的方向吗?

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.Socket;
import java.net.UnknownHostException;


public class My_Client {

public static void main(String[] args) throws UnknownHostException, IOException {

Socket s = new Socket("localhost", 5555);

BufferedReader r = new BufferedReader(new InputStreamReader(
s.getInputStream()));

PrintStream w = new PrintStream(s.getOutputStream());

w.print("hello world");
w.print('\n');

String line;

while ((line = r.readLine()) != null) {
System.out.println("Received: " + line);

//System.out.println("Error");
}
w.close();
}
}

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;
import java.net.ServerSocket;
import java.net.Socket;

-----------------------------------------------------------------
public class My_Server {

private static final int PORT = 5555;

public static void main(String[] args) {
try {
ServerSocket ss = new ServerSocket(PORT);
System.out.println("Server Socket Created");

while (true) {

System.out.println("Waiting on connection");
Socket cs = ss.accept();
System.out.println("Client connected");

BufferedReader r = new BufferedReader(new InputStreamReader(
cs.getInputStream()));
PrintStream w = new PrintStream(cs.getOutputStream());

String line;

while ((line = r.readLine()) != null) {
w.print(line + "!!!!");
w.print('\n');
}

System.out.println("Client disconnected");
r.close();
}

} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

}

}

最佳答案

两端都在读取直到 EOS,直到 EOS 之后才关闭。所以你有一个经典的僵局。您需要重新考虑您的应用程序协议(protocol)。

需要告诉您的PrintStreamPrintWriter 自动刷新,或者您自己调用flush() , 但与上述错误相比,这是一个相对较小的问题。

关于Java TCP 客户端服务器挂了?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21822610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com