b2科目四模拟试题多少题驾考考爆了怎么补救
b2科目四模拟试题多少题 驾考考爆了怎么补救

udp的广播_setsockopt广播_udp组播

电脑杂谈  发布时间:2017-04-28 05:12:18  来源:网络整理

udp组播_udp的广播_setsockopt广播

udp的广播udp的广播

在UDP正常通信中我的server和client都可以正常通信,可是在server广播消息时client接收不到广播消息而server可以接收到自己的广播消息!如何让client接收到UDP的广播消息?

在测试过程中发现client如果bind了相应的广播端口的话可以正常接收广播消息!

重要代码如下:

server:

//Bind端口

boolCUDPServer::BindPort(UNSHORTunBindPort)

{

//设置绑定方式

structsockaddr_inServerAddr;

ServerAddr.sin_family=AF_INET;

ServerAddr.sin_port=htons(unBindPort);///端口

ServerAddr.sin_addr.s_addr=htonl(INADDR_ANY);///本机

m_Socket=socket(AF_INET,SOCK_DGRAM,0);

BOOLbBroadcast=TRUE;

setsockopt(m_Socket,SOL_SOCKET,SO_BROADCAST,(constchar*)&bBroadcast,sizeof(BOOL));

if(SOCKET_ERROR==bind(m_Socket,(structsockaddr*)&ServerAddr,sizeof(ServerAddr)))

{

returnfalse;

}

returntrue;

}

//发送广播消息

boolCUDPServer::BroadCase(char*szSend,DWORDdwSendSize)

{

udp组播_setsockopt广播_udp的广播

SOCKADDR_INBroadcastAddr=m_ClientAddr;

BroadcastAddr.sin_family =AF_INET;

BroadcastAddr.sin_addr.s_addr =htonl(INADDR_BROADCAST);

BroadcastAddr.sin_port =htons(8848);

intnSiz=sizeof(SOCKADDR_IN);

if(SOCKET_ERROR==sendto(m_Socket,szSend,dwSendSize,0,(structsockaddr*)&BroadcastAddr,sizeof(BroadcastAddr)))

{

returnfalse;

}

unsignedshort*pUnBuff=(unsignedshort*)szSend;

cout<<"CUDPClient::BroadCase:"<<inet_ntoa(BroadcastAddr.sin_addr)<<"-"<<"size:"<<pUnBuff[0]<<"-"<<"type:"<<pUnBuff[1]<<endl;

returntrue;

}

client:

//Bind端口

boolCUDPClient::BindPort(std::stringstrBindIP,UNSHORTunBindPort)

{

m_ServerAddr.sin_family=AF_INET;

m_ServerAddr.sin_port=htons(unBindPort);///server的端口

m_ServerAddr.sin_addr.s_addr=inet_addr(strBindIP.c_str());///server的地址


本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/shumachanpin/article-43924-1.html

相关阅读
    发表评论  请自觉遵守互联网相关的政策法规,严禁发布、暴力、反动的言论

    • 鲁武公姬敖
      鲁武公姬敖

      你永远是我们的浪漫功夫熊猫

    热点图片
    拼命载入中...