C++ 使用openFrameworks接收UDP广播

C++ 使用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

我正在尝试接收并解析通过UDP广播发送的数据包

发送设备正在端口7331上发送广播

我的接收openframeworks程序基于以下ofxUDPManager文档:

DiscoveryListener.h

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