在C++中调用send
函数后,我尝试刷新套接字。
我使用了winsock2.h
库。
我需要在发送消息后立即发送数据,但是找不到像flash
函数之类的任何函数。
我正在尝试将消息发送到设备,并且它期望一个接一个地接收消息。
我的意思是,如果我在发送方中发送两个消息,例如“MessageOne”和“MessageTwo”,则接收方收到的“MessageOneMessageTwo”不是分开的,并且设备无法识别命令。
那我该怎么办呢?
最佳答案
您无法在发送端执行任何操作来使接收端“逐个”接收消息。正确地重构发送的帧(“消息”)完全是接收方的责任。接收代码必须以某种方式知道消息长度(完全是特定于协议(protocol)的),并接收适当的数据以构造整个帧(通常通过发布具有指定长度并指定了仅对整个缓冲区感兴趣的recv来实现,例如MSG_WAITALL
标志)。我很难相信您的设备不知道该如何处理,如果确实如此,您将无能为力。我发现您不太可能理解设备/协议(protocol)要求,并且提出了错误的问题。
关于c++ - 用C++刷新套接字,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/12814835/