所以我试图创建一个简单的服务器客户端程序,其中多个客户端可以连接到单个服务器。我正在客户端和服务器端运行一个线程。我有一个文件“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();
}
}
}
答案 0 :(得分:0)
我以前遇到过这个问题。通常有三件事
1.)同时检查发送的字符串“\ n”。使用\ n和println会弄乱回车,因为它会加倍。删除任何额外的“\ n”并尝试它。(很可能这是你的情况下的问题)
2.)客户端没有while循环来输出传递的整个数据。您将逐行发送数据。收到数据后,检查客户端是否正在关闭。
3.)检查客户端的线程。我不知道你的客户端线程是如何工作的,但我过去常常被其他线程阻塞。