Java inputstream.read()中到达的流结束是什么意思?
我的android智能手机是tcpclient,芯片套件wf32 wifi模块是我的tcp服务器Java inputstream.read()中到达的流结束是什么意思?,java,sockets,Java,Sockets,我的android智能手机是tcpclient,芯片套件wf32 wifi模块是我的tcp服务器 int bytesRead; InputStream inputStream = socket.getInputStream(); while ((bytesRead = inputStream.read(buffer)) != -1){ byteArrayOutputStream.write(buffer, 0, bytesRead); response += byt
int bytesRead;
InputStream inputStream = socket.getInputStream();
while ((bytesRead = inputStream.read(buffer)) != -1){
byteArrayOutputStream.write(buffer, 0, bytesRead);
response += byteArrayOutputStream.toString("UTF-8");
}
上面的代码从流中读取数据并复制到缓冲区。如果没有数据,它将阻塞。但有时我得到-1。谁能解释得到-1的原因?文件中提到“到达流的末端”。但你能解释一下这是什么意思吗?谢谢。对于套接字,这意味着对等方关闭了其连接端,或者至少关闭了它以进行输出 铌
应该在循环之外。我之前已经告诉过您,在您关于这个主题的众多线程中的另一个线程中。对于套接字,这意味着对等方关闭了它的连接端,或者至少关闭了它以进行输出 铌
应该在循环之外。我之前已经告诉过您,在您关于这个主题的众多线程中的另一个线程中。这意味着您的流不再包含任何剩余数据;你已经到了溪流的尽头。溪流的尽头是什么意思?套接字流长度等于我从服务器发送的数据的长度。不是吗?如果流中有数据,它应该返回数据。如果没有数据,则应等待收到数据?这张照片是怎么来的?@Kumar能给我一些钱吗?你的钱包是空的是什么意思?@ElliottFrisch你的意思是tcpserver没有更多的数据要发送,并且由于客户端的输入流到达了流的末尾?@Kumar没有。我的意思是客户端说没有更多的数据要读。这意味着你的流不再包含任何剩余的数据;你已经到了溪流的尽头。溪流的尽头是什么意思?套接字流长度等于我从服务器发送的数据的长度。不是吗?如果流中有数据,它应该返回数据。如果没有数据,则应等待收到数据?这张照片是怎么来的?@Kumar能给我一些钱吗?你的钱包是空的是什么意思?@ElliottFrisch你的意思是TCP服务器没有更多的数据要发送,因为客户端的输入流到达了流的末尾?@Kumar没有。我的意思是客户端说没有更多的数据要读取。在我的情况下,对等的是wifi模块,它就是TCP服务器。你说tcpserver关闭了连接?不,别告诉我我说了什么。我说对方关闭了连接。如果您是客户机,那么对等方就是服务器。如果你是服务器,它就是客户端。它是有线的。一旦我的模块连接到客户端。我只是发送数据。我不会在任何时候调用socket.close。我也在记录这次行动。在日志中,它从来没有显示在-1场景中连接是关闭的。不过这就是它的意思。除此之外什么都没有。可能您不知道关闭一个套接字输入或输出流会关闭另一个流和套接字。流从对等端关闭。就像winsock中的socket.shutdown()函数一样,服务器可能会调用它。在我的例子中,对等方是wifi模块,它是tcpserver。你说tcpserver关闭了连接?不,别告诉我我说了什么。我说对方关闭了连接。如果您是客户机,那么对等方就是服务器。如果你是服务器,它就是客户端。它是有线的。一旦我的模块连接到客户端。我只是发送数据。我不会在任何时候调用socket.close。我也在记录这次行动。在日志中,它从来没有显示在-1场景中连接是关闭的。不过这就是它的意思。除此之外什么都没有。可能您不知道关闭一个套接字输入或输出流会关闭另一个流和套接字。流从对等端关闭。与winsock中的socket.shutdown()函数类似,服务器可能会调用该函数。
response += byteArrayOutputStream.toString("UTF-8");