小编ALM*_*865的帖子

在C++中接收寻址到255.255.255.255的广播包

我有一个通过在端口4930上向255.255.255.255发送广播数据包而发现的设备,并且设备通过在端口4930上将数据包发送回255.255.255.255来响应.

我有一段C++代码,它可以在端口4930(源端口和目标端口)上发送数据包到255.255.255.255,但它无法从广播地址255.255.255.255接收回数据包.

我可以看到设备工作正常,wireshark可以看到来回来回的数据包,设备提供的专有软件可以很好地发现设备,问题在于C++程序,所以请继续回答主题.

现在,正如我所说,我可以发送一个数据包,但首先我无法绑定到IP地址255.255.255.255来接收数据包.我可以将组播地址更改为239.255.255.250,套接字将绑定,但我需要地址255.255.255.255.

我的代码片段如下,我使用的是VC++ 2010

bool CPTUProgramDlg::FindPTU(u_short port, const char * Destaddress){
    {
        //Data to send
        char packet_data[10] = {0x44,0x43,0x55,0x44,0x5f,0x50,0x49,0x4e,0x47,0x00};
        int packet_size=10;

        SOCKET sock;
        struct sockaddr_in addr;

        sock = socket(AF_INET, SOCK_DGRAM, 0);

        // set SO_BROADCAST on a socket to true (1): (so we can transmit to 255 addr)
        //In order to use broadcast the options of socket must change
        char broadcastON = 1;
        setsockopt(sock, SOL_SOCKET, SO_BROADCAST, &broadcastON, sizeof broadcastON);

        if (sock < 0)
            return false;

        addr.sin_family = AF_INET;
        addr.sin_port …
Run Code Online (Sandbox Code Playgroud)

c c++ sockets networking

5
推荐指数
1
解决办法
4478
查看次数

标签 统计

c ×1

c++ ×1

networking ×1

sockets ×1