[英]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.