1

所以我正在尝试创建一个简单的服务器客户端程序,其中多个客户端可以连接到单个服务器。我在客户端和服务器端都运行一个线程。我有一个文件“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();
            }

        }
    }
4

1 回答 1

0

我以前遇到过这个问题。通常有三样东西

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

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

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

于 2015-04-23T13:17:59.180 回答