C++ 局域网广播网址设置

C++实现局域网广播
问题:
广播发送端socket 绑定网址255.255.255.255,接收端收不到广播。发送端绑定接收端端的网址时,比如192.168.1.1,可以收到广播。请问为什么呢


#include <iostream>
#include <winsock2.h> //注意这里的include文件顺序

#include <Ws2tcpip.h>

#pragma comment(lib, "ws2_32.lib")

using namespace std;

int main()
{
    WSAData wsaData;

    if (WSAStartup(MAKEWORD(2, 2), &wsaData) != 0)
    {
        cout << "Error in WSAStartup" << endl;
        return 0;
    }

    SOCKET server;
    server = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP); //创建一个UDP套接口
    cout << "create socket: " << server << endl;
    
    BOOL bBroadcast = TRUE;

    if (setsockopt(server, SOL_SOCKET, SO_BROADCAST, (char *)&bBroadcast, sizeof(bBroadcast)) == SOCKET_ERROR)
    {
        WSACleanup();

        cout << "Error in setsockopt(SO_REUSEADDR): " << WSAGetLastError() << endl;
        return 0;
    }
    
    SOCKADDR_IN bcast;
     
     
    bcast.sin_family = AF_INET;
//    bcast.sin_addr.S_un.S_addr = INADDR_BROADCAST;
//    bcast.sin_addr.S_un.S_addr = inet_addr("192.168.120.255");
    inet_pton(AF_INET, "192.168.120.60", &bcast.sin_addr.s_addr);
    bcast.sin_port = htons(4567);
    //发送广播
    cout << "开始广播!" << endl;
    char sz[] = "This is just a test!\r\n";
    int  i = 0;
    while (TRUE){
        i++;
        cout << "第" << i << "次广播!" << endl;
        if (sendto(server, sz, strlen(sz), 0, (sockaddr*)(&bcast), sizeof(bcast)) == -1){
            cout << "发送用户输入的数据到多播组失败!" << endl;
        }
        Sleep(1000);
    }

    return 0;
}