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



所以我正在尝试创建一个简单的服务器客户端程序,其中多个客户端可以连接到单个服务器。我在客户端和服务器端都运行一个线程。我有一个文件"登录用户.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.)还要检查您发送的末尾有""的字符串。使用 和 println 会弄乱回车,因为它会加倍。删除任何多余的""并尝试一下。(很有可能这是您案例中的问题)

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

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

最新更新