如果使用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_SvrSockAddr.sa_netnum, 0, 4);

本文介绍了如何在编程中使用IPX协议进行数据广播。首先,需要安装IPX协议,并将其设置为Ethernet 802.3。接着,通过示例代码展示了接收端的流程,包括初始化WSAData,创建socket,设置SO_BROADCAST选项,填充SOCKADDR_IPX结构体并绑定到特定端口。关键点在于接收端的nodenum应设置为客户端的MAC地址。
最低0.47元/天 解锁文章
154

被折叠的 条评论
为什么被折叠?



