【问题标题】:Unable to read from the stream in java无法从java中的流中读取
【发布时间】:2015-08-03 00:50:15
【问题描述】:

我在 java 中使用 tcp 套接字 进行客户端服务器编程。在 outputstream 中写入消息后,我开始读取 inputstream 并继续读取,直到 inputstream 返回 -1(EOF)。但它没有返回-1,我被卡住了。请提出您的建议。看看下面的代码。

int bytesRead = tcpSocket.readPacket(buffer);
while(bytesRead != -1) {
    builder.append(new String(buffer, 0, bytesRead));
    bytesRead = tcpSocket.readPacket(buffer);
}

【问题讨论】:

  • 你是如何设置tcpSocket的?什么是向套接字发送信息?
  • 你正在使用什么类 - 即 tcpSocket 的类型是什么?
  • 我使用服务器的 IP 地址和端口号设置了 tcp 套接字。我正在发送 xml 格式的信息。
  • 如果这个程序是客户端,服务器必须在写完响应后关闭输出流。或者服务器返回内容长度,客户端必须准确读取字节大小。
  • @user2570465 我在java中使用socket.class,用于连接、读取和写入流

标签: java sockets inputstream outputstream


【解决方案1】:

如果它是一个 Socket,那么当连接终止时(通常)将返回 -1。

在你的情况下,我猜想没有进一步的数据通过,但它也没有返回 -1。

【讨论】:

  • 调试时,当调试器到达这一行时,n = socketRead0(fd, b, off, length, impl.getTimeout()) socketRead0 方法什么也不返回,调试器就消失了。
  • “调试器消失”,因为没有进一步的执行 - 调用阻塞。如果要接收更多数据,或对等方关闭连接,调试器将在下一行恢复。
猜你喜欢
  • 1970-01-01
  • 2019-05-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-14
  • 2014-12-13
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多