UDP可以多播和广播。ACE的UDP对于多播使用ACE_SOCK_Dgram_Mcast类,对于广播使用ACE_SOCK_Dgram_Bcast。具体参考下例:
多播:
#include <iostream>
#include <string>
#include <ace/SOCK_Dgram_Mcast.h>
using namespace std;
const char* mcast_addr = "225.1.1.1:9999";
int main(int argc, char* argv[])
{
ACE_INET_Addr mcast(mcast_addr),remote;
ACE_SOCK_Dgram_Mcast udp;
udp.join(mcast);
udp.send("123456",6);
char buf[10];
while(1)
{
int size = udp.recv(buf,10,remote);
buf[size] = 0;
cout <<remote.get_host_addr()
<<" : "
<< remote.get_port_number()
<< " : "
<<buf << endl;
}
return 0;
}
广播:
#include <iostream>
#include <string>
#include <ace/SOCK_Dgram_Bcast.h>
using namespace std;
int main(int argc, char* argv[])
{
ACE_INET_Addr addr(9999),remote;
ACE_SOCK_Dgram_Bcast udp(addr);
udp.send("123456",6);
char buf[10];
while(1)
{
int size = udp.recv(buf,10,remote);
buf[size] = 0;
cout <<remote.get_host_addr()
<<" : "
<< remote.get_port_number()
<< " : "
<<buf << endl;
}
return 0;
}
ACE的UDP多播和广播
最新推荐文章于 2023-02-14 19:36:08 发布