C++ 使用openFrameworks接收UDP广播
我正在尝试接收并解析通过UDP广播发送的数据包 发送设备正在端口7331上发送广播 我的接收openframeworks程序基于以下ofxUDPManager文档: DiscoveryListener.hC++ 使用openFrameworks接收UDP广播,c++,sockets,udp,broadcast,openframeworks,C++,Sockets,Udp,Broadcast,Openframeworks,我正在尝试接收并解析通过UDP广播发送的数据包 发送设备正在端口7331上发送广播 我的接收openframeworks程序基于以下ofxUDPManager文档: DiscoveryListener.h class DiscoveryListener { public: DiscoveryListener(); ~DiscoveryListener(); void update(); string getMessage(); private: ofxUDPManager
class DiscoveryListener {
public:
DiscoveryListener();
~DiscoveryListener();
void update();
string getMessage();
private:
ofxUDPManager udpConnection;
string message;
int newMessage;
static const int portNo = 7331;
static const int packetSize = 76;
};
DiscoveryListener.cpp
#include "DiscoveryListener.h"
DiscoveryListener::DiscoveryListener() {
udpConnection.Create();
udpConnection.SetEnableBroadcast(true);
udpConnection.BindMcast("0.0.0.0", portNo);
udpConnection.SetNonBlocking(true);
newMessage = 0;
}
void DiscoveryListener::update() {
char udpMessage[packetSize];
newMessage = udpConnection.Receive(udpMessage,packetSize);
std::cout << "Packet size: " << newMessage << std::endl;
printf("UDP Packet: %s", udpMessage);
}
string DiscoveryListener::getMessage() {
if(newMessage) {
return message;
}
else {
return "No new messages.";
}
}
因此,似乎在大多数情况下,错误数据包大小返回-1,然后大约每秒一次,当发送设备发送其UDP广播时,我收到一个76字节的数据包。然而,它没有打印出来,我似乎找不到一种方法来解析它
我收到的多播错误吗?或者我打印字节数组的方式有问题吗
非常感谢你的帮助 UDP数据包有时会丢弃并且不使用TCP握手。辍学的程度还取决于网络上的流量 文档的格式通常不是最新的。我建议您下载最新版本,并根据示例文件夹中的示例开发您的开发人员: 解析消息的方式还取决于为消息选择的终止符。[p]在示例中
void testApp::setup(){
listener = new DiscoveryListener();
}
//--------------------------------------------------------------
void testApp::update(){
listener->update();
}
//--------------------------------------------------------------
void testApp::draw(){
std::cout << "Frame Number: " << ofGetFrameNum() << std::endl;
std::cout << "Message: " << listener->getMessage();
}
Packet size: -1
UDP Packet:
Packet size: -1
UDP Packet:
Packet size: 76
UDP Packet:
Packet size: -1
UDP Packet:
Packet size: -1