JAVA:TCP readline()终止,二进制零
我试图从第三方服务器接收TCP数据,其消息以二进制零(JAVA:TCP readline()终止,二进制零,java,tcp,Java,Tcp,我试图从第三方服务器接收TCP数据,其消息以二进制零('\0')而不是换行符('\n)终止。据我所知,JAVA的readline()等待'\n'终止,这可能是我的代码挂起的原因 try { socket = new Socket(hostip, portNum); BufferedReader inFromServer = new BufferedReader(new InputStreamReader (socket.getInputStream())); msg =
'\0'
)而不是换行符('\n
)终止。据我所知,JAVA的readline()
等待'\n'
终止,这可能是我的代码挂起的原因
try {
socket = new Socket(hostip, portNum);
BufferedReader inFromServer = new BufferedReader(new InputStreamReader (socket.getInputStream()));
msg = inFromServer.readLine();
socket.close();
} catch (IOException e) {
msg = "Connection failed. IOException.";
}
是否有一种从服务器读取消息的方法,使得'\0'
表示传输结束,而不是'\n'
谢谢直接使用
InputStreamReader
:
try {
socket = new Socket(hostip, portNum);
InputStreamReader in = new InputStreamReader(socket.getInputStream(), StandardCharsets.UTF_8);
StringBuffer sb = new StringBuffer();
int ch = 'a';
while((ch = in.read()) != (char)0){
if(ch == -1) break;
System.out.println(ch);
sb.append((char)ch);
}
msg = sb.toString();
socket.close();
} catch (IOException e) {
msg = "Connection failed. IOException.";
}
根据定义,行由行终止符终止。C字符串以null结尾。谢谢-我试试看。