4 java sockets tcp newline stream
我ServerSocket写出以下几行:
OutputStreamWriter outstream = new OutputStreamWriter(clientSocket.getOutputStream());
BufferedWriter out = new BufferedWriter(outstream);
out.write("Hello");
out.newLine();
out.write("People");
out.flush();
Run Code Online (Sandbox Code Playgroud)
我的客户端读取它是这样的:
in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
while(true){
line = in.readLine();
if(line == null){
ClientDialog.gui.log.append("NULL LINE\r\n");
} else{
ClientDialog.gui.log.append(line+"\r\n");
}
if(in.readLine() == "SHUTDOWN"){
break;
}
}
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我在套接字上写了"Hello",一个新行,然后是"People",但是当我运行我的客户端时,它只会重复打印"Hello"和null.我看不出有什么问题?
问题解决了:
我不得不添加out.newLine()后我写了"人"的插座上,我不得不这样做line == "SHUTDOWN"不是in.readLine() == "SHUTDOWN"因为in.readLine()被消耗"人物".
还建议equals()在String类中使用该方法,而不是==.
谢谢!
这是为了未来的观众.
每个循环调用readLine两次.
if(in.readLine() == "SHUTDOWN"){
break;
}
Run Code Online (Sandbox Code Playgroud)
上面的代码会消耗您的"People"行
修改改变
if("SHUTDOWN".equals(line){
break;
}
Run Code Online (Sandbox Code Playgroud)
你也应该在发送"人物"后发送换行符
| 归档时间: |
|
| 查看次数: |
583 次 |
| 最近记录: |