Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用套接字读取\0/null?_Java_Sockets - Fatal编程技术网

Java 如何使用套接字读取\0/null?

Java 如何使用套接字读取\0/null?,java,sockets,Java,Sockets,我正在尝试从套接字读取,直到达到“\0”(null)。这是Flash使用的终止符。在C++中,我也遇到了这个问题 Oracle Java文档中的此示例代码在我的情况下不起作用,因为“readLine”仅计算\r\n等。我不知道如何读入缓冲区,我对如何读入缓冲区有一些想法,但我不知道如何实现。您可以使用对象从套接字读取单个字节 你能行 InputStream in = socket.getInputStream(); for(int b; ((b = in.read()) > 0;) {

我正在尝试从套接字读取,直到达到“\0”(null)。这是Flash使用的终止符。在C++中,我也遇到了这个问题


Oracle Java文档中的此示例代码在我的情况下不起作用,因为“readLine”仅计算\r\n等。我不知道如何读入缓冲区,我对如何读入缓冲区有一些想法,但我不知道如何实现。

您可以使用对象从套接字读取单个字节

你能行

InputStream in = socket.getInputStream();

for(int b; ((b = in.read()) > 0;) {
   // do something with b.
}
// stops at end of file or b == 0.

您的Java代码是什么样子的?请看在那篇文章中链接到的解决方案@andersoj(带有StringBuilder等的解决方案)在我断开连接之前不会解析(返回)我的数据,然后所有数据都会立即出现。您控制发送方吗?您确定发送的tcp流在每行/记录之后都在刷新吗?你可以在while循环中加入一点printf调试,一个接一个地输出字符,看看发生了什么……但是b是一个整数?我当然想要实际内容?实际内容是值为0到255的字节,您可以从
int
中获得。它不是字节的原因是您需要一个额外的值
-1
作为流的结尾。
DataInputStream inStream = new DataInputStream(socket.getInputStream());

byte next = inStream.readByte();
InputStream in = socket.getInputStream();

for(int b; ((b = in.read()) > 0;) {
   // do something with b.
}
// stops at end of file or b == 0.