gpt4 book ai didi

Java TCP FIN 但没有流内 eof

转载 作者:行者123 更新时间:2023-12-01 10:37:23 25 4
gpt4 key购买 nike

我一直在使用org.apache.commons.net.telnet连接到控制流并向摄像头发送命令。我发送数据流请求并打开一个新线程,该线程从相机传感器扫描图像并将数据作为原始字节发送给我。我正在使用标准 java.io instream 和 outstream 来读取。我正在写入文件的输出......只是原始字节。但是,我陷入了读取套接字发送的数据的无限循环中。 instream.read() > -1 让我留在那里...我已经完成了 instream.available() > 0,但这通常会缩短图像(可以理解)所以)。我什至尝试过各种和/或,但永远无法完整阅读。

我已经在 Wireshark 中确认所有内容都已传递到我的程序并且已发送 FIN,但由于某种原因,JAVA 没有接收 FIN 并给我 -1。文件的输出保持打开状态,我从未从传感器获得“完整”图像扫描。 (我一直在手动终止流并读取图像。最终目标是将此图像放入标签中,并将其用于动态偶尔的相机曝光更新。)

是否有某种方法可以检测 FIN 消息并告诉循环在 instream.read() 之外终止?

其他信息:Win 7(企业版)、Netbeans IDE

最佳答案

A instream.read() > -1 keeps me there

当然可以。它会丢弃一个字节,并且它首先不是一个有效的测试。您的读取循环应如下所示:

int ch;
while ((ch = instream.read()) != -1)
{
// ... Cast ch to a byte and use it somehow ...
}

或者这个:

int count;
byte[] buffer = new byte[8192];
while ((count = instream.read(buffer)) > 0)
{
// ...
// for example:
out.write(buffer, 0, count);
}

关于Java TCP FIN 但没有流内 eof,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34585482/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com