繁体   English   中英

Java中的客户端套接字编程-从服务器端写入客户端套接字的麻烦

[英]Client-socket programming in Java - trouble with writing to the client socket from server side

因此,我试图创建一个简单的服务器客户端程序,其中多个客户端可以连接到单个服务器。 我在客户端和服务器端都运行一个线程。 我有一个文件“ 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.)在客户端检查线程 我不知道您的客户端线程是如何工作的,但是我的客户端线程曾经被其他线程阻塞。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM