![]() |
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可以有可变的长度,因此您可以读取完整的头,然后确定主体的长度,并基于读取的完整体。 希望这有帮助。 |
![]() |
mig21 bis · 带套接字的SSL_set_fd地址边界错误 2 年前 |
![]() |
hollow · 在读写C中的套接字时,为什么要使用循环缓冲区? 2 年前 |
![]() |
Filipe · 通过http python发送图像 6 年前 |
|
Mr. Rogers · epoll_wait事件的epoll顺序 6 年前 |
![]() |
Michael Beer · 查找插座的传输类型 6 年前 |