IPX协议接受数据问题

wwl08210612 2008-08-01 05:24:31
抓包工具可以抓到别人发送的数据,可就是读不了。
代码如下:
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超时退出,可是抓到数据了。
请大家帮忙分析,感激涕零?
...全文
56 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
wwl08210612 2008-08-04
  • 打赏
  • 举报
回复
没有解决,大家多给意见阿....
stivenjia 2008-08-01
  • 打赏
  • 举报
回复
FD_ISSET
检查一下

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧