![]() |
1
1
它不是tcpclient.receiveMessageFrom(),而是socket.receiveMessageFrom() 如果你看看 documentation ,您将阅读以下内容:
编辑 : 设置为空确实是个坏主意。 |
![]() |
2
1
虽然不是对你的问题的直接回答,但我认为这个答案仍然是有用的(尽管这个问题问了很久)。 因为我不知道iscsi是通过tcp还是通过纯ip工作,所以我无法为您的问题提供解决方案。但一般来说,tcp是一种面向流的协议,没有“消息”的概念。另一方面,ip是一种面向数据报(即消息)的协议,它有消息的概念。在代码中,您试图从TCP套接字读取“消息”(IP构造),但这将不起作用。是的,TCP基于IP,但IP数据报在TCP级别上不可见。 您提到的问题(读取完整消息,而不读取下一条消息)仅适用于TCP级别,因为在IP上您确实可以读取一条完整消息。当你想在tcp级别上做同样的事情时,你需要使用一个带有消息支持的协议。通常要实现这一点,您需要有自己的协议,基于TCP,消息如下: [消息头][消息正文] 其中[msg header]包含如下内容: [消息类型][消息正文长度] msg type和msg body length有固定的长度(例如,msg type为2字节,body length为4字节),msg body可以有可变的长度,因此您可以读取完整的头,然后确定主体的长度,并基于读取的完整体。 希望这有帮助。 |
![]() |
user2138149 · 双栈网络服务器无法按预期处理ipv4请求 5 月前 |
![]() |
Triet Doan · 套接字的类型提示是什么? 11 月前 |
![]() |
Ames ISU · 套接字缓冲区在Linux中是如何工作的? 1 年前 |