java readline 死循环_一次执行后被困在reader.readLine()

我一直在研究这个问题一段时间,我似乎无法解决这个问题 . 根据我正在运行的内容,我不断陷入for循环或while循环 . 如果这看起来像重复,我很抱歉,但我已经审查了这个page和this以及其他几个但我无法解决这个问题 .

我设置了一些测试打印以查看正在执行的内容并且它在第一次迭代中运行完全正常,但之后它将卡在reader.readLine() . 在这种情况下它应该只需要一次迭代,因为readLine()将使用它读取的行,这意味着我假设下一行将为null并且while循环将终止,但显然情况并非如此 .

另外,对一个writer.flush()使用多个writer.write(string)是否可以?只是很好奇,因为我也尝试将我的服务器中的两个消息变量分开,然后使用一个刷新,但我仍然遇到了相同的卡住问题 .

客户:

while(!message.equals("Quit") || !message.equals("quit"))

{

System.out.println("Test1");

BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

System.out.print("Message to send: ");

message = scanIn.nextLine();

System.out.println("Test2");

writer.write(message + "\r\n");

writer.flush();

String serverMsg;

System.out.println("Test3");

for (String line = reader.readLine(); line != null; line = reader.readLine())

{

System.out.println(line);

System.out.println("Test4");

}

/*while ((serverMsg = reader.readLine()) != null)

{

if(message.equals("quit") || message.equals("Quit"))

{

break;

}

System.out.println("Test4");

System.out.println(serverMsg);

}*/

System.out.println("Test5")

}

System.out.println("Test6");

服务器:

System.out.println("Server: Running");

ServerSocket mySocket = new ServerSocket(8189);

Socket socket = mySocket.accept();

while (true)

{

BufferedReader reader = new BufferedReader(new InputStreamReader(socket.getInputStream()));

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(socket.getOutputStream()));

String message = reader.readLine().trim();

String message2 = message;

message = ProjectSQL.avgFromSQL(message.substring(0,1), message.substring(1,2));

message2 = ProjectSQL.avgFromSQLCurrent(message2.substring(0,1), message2.substring(1,2));

writer.write(message+" "+message2+"\r\n");

writer.flush();

}

我的文件输出是这个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值