如果使用IPX协议广播数据,必须先安装IPX协议,安装方法google下到处都有,接下来就是设置IPX的属性了,这一步相当重要不然是收不到数据的,一般设置为Ethernet 802.3。这个问题也是困扰了我很久。(recvfrom就是收不到数据而抓包软件是可以收到包的,汗一个)
代码方面:
接收端流程
WSAData wsa;
WSAStartup(MAKEWORD(1, 1), &wsa);
if((this->m_sdServer=socket(AF_IPX, SOCK_DGRAM, NSPROTO_IPX))==INVALID_SOCKET)
{
this->m_sdServer=NULL;
return false;
}
BOOL m_fBroadcast = TRUE;
if((setsockopt(this->m_sdServer, SOL_SOCKET, SO_BROADCAST, (CHAR*)&m_fBroadcast, sizeof(bool)))==SOCKET_ERROR)
{
//ui->m_lConnected->setText("警告:设置Socket参数失败"+QString().setNum(WSAGetLastError()));
this->m_sdServer=NULL;
return false;
}
SOCKADDR_IPX m_SvrSockAddr;
m_SvrSockAddr.sa_family=AF_IPX;
m_SvrSockAddr.sa_socket=htons(0x4000);
memset(m_Svr