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

时间:2013-10-01 07:21:29

标签: java multithreading sockets readline println

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

答案 0 :(得分:0)

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

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

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

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

相关问题