端口好像无需为,地址一般是你当前地址,不过最后一个字段是255获254

解决方案 »

  1.   

    saUdpServ.sin_addr.s_addr = htonl ( INADDR_BROADCAST );
    saUdpServ.sin_port = htons (7001);//发送用的端口,可以根据需要更改
    给你看个完整的例子:#include <stdio.h>
    #include <winsock.h>int main(int argc, char* argv[])
    {
        WSADATA wsaData;          //指向WinSocket信息结构的指针
        SOCKET sockListener;
        SOCKADDR_IN sin,saUdpServ;
        BOOL fBroadcast = TRUE;
        char sendBuff[1024];
        int nSize;
        int ncount=0;
        if(WSAStartup(MAKEWORD( 1, 1 ), &wsaData )!=0)//进行WinSocket的初始化
        {
            printf("Can't initiates windows socket!Program stop.\n");//初始化失败返回-1
            return -1;
        }
        sockListener=socket(PF_INET,SOCK_DGRAM,0);
        setsockopt ( sockListener,SOL_SOCKET,SO_BROADCAST,
            (CHAR *)&fBroadcast,sizeof ( BOOL ));    sin.sin_family = AF_INET;
        sin.sin_port = htons(0);
        sin.sin_addr.s_addr = htonl(INADDR_ANY);
        if(bind( sockListener, (SOCKADDR *)&sin, sizeof(sin))!=0)
        {
            printf("Can't bind socket to local port!Program stop.\n");//初始化失败返回-1
            return -1;
        }
        saUdpServ.sin_family = AF_INET;
        saUdpServ.sin_addr.s_addr = htonl ( INADDR_BROADCAST );
        saUdpServ.sin_port = htons (7001);//发送用的端口,可以根据需要更改
        nSize = sizeof ( SOCKADDR_IN );
        while(1)
        {
            sprintf(sendBuff,"Message %d",ncount++);
            sendto ( sockListener,sendBuff,
                lstrlen (sendBuff),
                0,
                (SOCKADDR *) &saUdpServ,
                sizeof ( SOCKADDR_IN ));
            printf("%s\n",sendBuff);
        }
    return 0;
    }