IPX协议接受数据问题
抓包工具可以抓到别人发送的数据,可就是读不了。
代码如下:
SOCKET SocketIPX;
SocketIPX = socket(AF_IPX,SOCK_DGRAM,NSPROTO_IPX);
if(INVALID_SOCKET == SocketIPX)
{
closesocket(SocketIPX);
return ;
MessageBox("创建套接字失败","", MB_OK);
}
//设置本机邦定信息
SOCKADDR_IPX IPXAddr, IPXClient;
ZeroMemory(&IPXAddr, sizeof(SOCKADDR_IPX));
memset(IPXAddr.sa_netnum, 0, sizeof(IPXAddr.sa_netnum));
memset(IPXAddr.sa_nodenum, 0, sizeof(IPXAddr.sa_nodenum));
IPXAddr.sa_family = AF_IPX;
IPXAddr.sa_socket = htons(3000);
//邦定本地端口
if(SOCKET_ERROR == bind(SocketIPX, (SOCKADDR*)&IPXAddr, sizeof(SOCKADDR_IPX)))
{
int Error = WSAGetLastError();
closesocket(SocketIPX);
MessageBox("邦定端口失败", "", MB_OK);
return ;
}
//设置超时
fd_set readSetipx;
FD_ZERO(&readSetipx);
FD_SET(SocketIPX,&readSetipx);
timeval tiipx;
tiipx.tv_sec = 3;
tiipx.tv_usec = 0;
int i = select(0,&readSetipx,NULL,NULL,&tiipx);
if(i <= 0)
{
closesocket(SocketIPX);
m_ReceiveBuffer.SetWindowText("连接失败");
return;
}
if(FD_ISSET(SocketIPX, &readSetipx))
{
char DataBuffer[1024];
memset(DataBuffer, 0, 1024);
int Length = sizeof(SOCKADDR_IPX);
//接收数据
if(SOCKET_ERROR == recvfrom(SocketIPX, DataBuffer, 1024, 0, (SOCKADDR*)&IPXClient, &Length))
{
closesocket(SocketIPX);
m_ReceiveBuffer.SetWindowText("接受数据失败");
return;
}
else
{
m_ReceiveBuffer.SetWindowText(DataBuffer);
UpdateData(false);
}
}
//关闭套接字
closesocket(SocketIPX);
总是在select超时退出,可是抓到数据了。
请大家帮忙分析,感激涕零?