Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.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套接字,不必要地将小字符串拆分为两个数据包_Java_Sockets - Fatal编程技术网

Java套接字,不必要地将小字符串拆分为两个数据包

Java套接字,不必要地将小字符串拆分为两个数据包,java,sockets,Java,Sockets,我试图用套接字与设备服务器通信,在readLine上挂起我的小Java程序后,我不得不向目标应用程序注入数据包嗅探器,并发现os.writeBytes(“notify\n”)被拆分为两个数据包,第一个包含n,下一个包含otify,服务器不喜欢这些数据包。我通过在前面添加另一个writeBytes来解决这个问题: os.writeBytes(“”) os.writeBytes(“通知”) os.flush(); 对我来说,这似乎有点骇客和潜在的不稳定,有人能告诉我为什么我要这么做,并给我一个更

我试图用套接字与设备服务器通信,在
readLine
上挂起我的小Java程序后,我不得不向目标应用程序注入数据包嗅探器,并发现
os.writeBytes(“notify\n”)
被拆分为两个数据包,第一个包含
n
,下一个包含
otify
,服务器不喜欢这些数据包。我通过在前面添加另一个
writeBytes
来解决这个问题:


os.writeBytes(“”)
os.writeBytes(“通知”)
os.flush();

对我来说,这似乎有点骇客和潜在的不稳定,有人能告诉我为什么我要这么做,并给我一个更好的解决方案


干杯

当使用原始套接字连接时,您永远不能假设您将以离散块的形式收到消息。在生产环境中,您完全有可能同时收到部分消息或多条消息

如果你不想处理这个问题,你应该考虑使用一个类似的程序库来处理程序员的这些问题。


话虽如此,我同意Thomas的观点,您的问题可能与您选择的
writeBytes

TCP套接字有关,或者别的什么?你使用writeBytes而不是另一种写入方式有什么原因吗?如果你通过TCP连接发送字符串,我想不出这会导致问题的原因,因为TCP提供了数据通信流。写入字符串后,尝试刷新输出流(os.flush())。