gpt4 book ai didi

java - Java 中的客户端套接字编程 - 从服务器端写入客户端套接字时出现问题

转载 作者:行者123 更新时间:2023-12-01 04:19:22 24 4
gpt4 key购买 nike

所以我尝试创建一个简单的服务器客户端程序,其中多个客户端可以连接到单个服务器。我在客户端和服务器端都运行一个线程。我有一个文件“loginuser.txt”,其中包含 5 行文本。这段代码是服务器线程。当我调用 outToClient.println("xxx") 或其他任何内容时,客户端一次接收的内容不会超过一行。每次用户在键盘(在客户端)上输入任何内容时,文件的下一行都会显示在同一终端上。有人能告诉我为什么会发生这种情况吗?我哪里错了?基本问题:对于从服务器到客户端的单行 println() ,似乎我每次都必须在客户端输入一些内容。

BufferedReader inFromUser=new BufferedReader(new InputStreamReader(System.in));
BufferedReader inFromClient=new BufferedReader(new InputStreamReader(client.getInputStream()));
BufferedReader userlogr=new BufferedReader(new FileReader("loginuser.txt"));
PrintWriter outToClient = new PrintWriter(client.getOutputStream(), true);
if(check==1)
{
fromclient=inFromClient.readLine();
if(fromclient.compareTo("xxx")==0)
{
String line;
while((line=userlogr.readLine())!=null)
{
System.out.println(line);
outToClient.println(line);
outToClient.flush();
}

}
}

最佳答案

我以前也遇到过这个问题。通常有三件事

1.)还要检查您发送的末尾有“\n”的字符串。使用\n 和 println 会弄乱回车,因为它会加倍。删除任何多余的“\n”并尝试它。(很可能这就是您的情况的问题)

2.) 客户端没有 while 循环来输出正在传递的整个数据。您正在逐行发送数据。检查客户端收到数据后是否自行关闭。

3.) 在客户端检查您的线程。我不知道你的客户端线程是如何工作的,但我的客户端线程曾经被其他线程阻塞。

关于java - Java 中的客户端套接字编程 - 从服务器端写入客户端套接字时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19110276/

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