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

Java中的客户端套接字编程-从服务器端写入客户端套接字时遇到问题,java,multithreading,sockets,readline,println,Java,Multithreading,Sockets,Readline,Println,因此,我尝试创建一个简单的服务器-客户机程序,其中多个客户机可以连接到单个服务器。我在客户端和服务器端运行一个线程。我有一个文件loginuser.txt,其中有5行文本。此代码是服务器线程。当我调用outToClient.printlnxxx或任何东西时,客户机一次不会收到多行。每次用户在客户端的键盘上输入任何内容时,文件的下一行将显示在同一终端上。有人能告诉我为什么会这样吗?我哪里做错了? 基本问题:对于从服务器到客户端的一行println,似乎每次都必须在客户端键入一些内容 Buffere

因此,我尝试创建一个简单的服务器-客户机程序,其中多个客户机可以连接到单个服务器。我在客户端和服务器端运行一个线程。我有一个文件loginuser.txt,其中有5行文本。此代码是服务器线程。当我调用outToClient.printlnxxx或任何东西时,客户机一次不会收到多行。每次用户在客户端的键盘上输入任何内容时,文件的下一行将显示在同一终端上。有人能告诉我为什么会这样吗?我哪里做错了? 基本问题:对于从服务器到客户端的一行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并重试。这很可能是您的问题所在

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


三,。检查客户端的线程。我不知道你的客户端线程是如何工作的,但我的客户端线程过去常常被其他线程阻塞。

听起来客户端就是问题所在。它在一个循环中暂停输入,只有一个线程处理用户输入和从服务器接收数据。编辑您的帖子并显示客户端代码。听起来像是协议问题。我的猜测是,客户端发送的每一行只读取一行。如果你想在一个响应中发送多行,你需要有其他方法来知道你何时收到了整个消息。你能显示相应的客户端代码吗?