//...
SOCKET socket_broad;
//...
void SendBroadcast()
{
    sendto(...);//广播出请求,局域网内的其它机器可以收到
}
void ReadBroadcast()
{//接收广播消息,并发送回应
    struct sockaddr_in from;
    int fromlen = sizeof(from);
    int recvcount=recvfrom(socket_broad,buffer,sizeof(buffer),0,(sockaddr*)&from,&fromlen);
        //..解析
        sendto(...);//根据解析广播出相应的回应,可局域网内的其它机器接收不到
}
以下为循环调用 C/C++ code
fd_set fd_read;
timeval timeout;
timeout.tv_sec=0;
timeout.tv_usec=5000;
FD_ZERO(&fd_read);
FD_SET(socket_broad,&fd_read);
DWORD timebroadcast=0;
DWORD timecurrent;
int s=select(0,&fd_read,NULL,NULL,&timeout);
if (s==SOCKET_ERROR)
    {
        printf("select error:%d\r\n",GetLastError());
    }
if(s>0)
    {
        if ( FD_ISSET(socket_broad,&fd_read))
        {
                 ReadBroadcast();
                 }
        }
       timecurrent=timeGetTime();
    if (timecurrent-timebroadcast>5000)
    {
        SendBroadcast();//定时广播请求
        timebroadcast=timecurrent;
    }