98与2000兼容问题

qq_13939330 2004-12-03 07:40:35
我在xp,和2000下都能正常运行的程序,在98下却收不到包!
2000/xp send-->98正常,而 98send-->xp,2000失败!虽然send()函数调用成功,返回发送字节数,而
2000,xp却收不到包,可能由什么原因引起的??
...全文
57 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_13939330 2004-12-03
  • 打赏
  • 举报
回复
WSAEventSelect 98下绝对支持!
oyljerry 2004-12-03
  • 打赏
  • 举报
回复
WSAEventSelect好像98不支持
qq_13939330 2004-12-03
  • 打赏
  • 举报
回复
int CNetSocket::RecvDataEvent(SOCKET hSocket, char * pszBuffer, int nBufferSize, DWORD dwTimeout)
{
WSANETWORKEVENTS NetEvent;
HANDLE hReadEvent;
DWORD dwWaitResult ;
DWORD nRecvBytes = 0;

hReadEvent = CreateEvent(NULL, FALSE, FALSE, NULL);
if (hReadEvent == NULL)
{
return -1;
}

while( true )
{
if( WSAEventSelect(hSocket, (WSAEVENT) hReadEvent, FD_READ | FD_CLOSE)== SOCKET_ERROR )
{
CloseHandle(hReadEvent);
return -1;
}

dwWaitResult = WSAWaitForMultipleEvents(1, &hReadEvent, TRUE, dwTimeout, TRUE);
if (dwWaitResult != WSA_WAIT_EVENT_0)
{
break;
}

if(WSAEnumNetworkEvents(hSocket,(WSAEVENT)hReadEvent,&NetEvent) == SOCKET_ERROR)
{
break;
}

if( NetEvent.lNetworkEvents == FD_CLOSE)
{
return -2;
}

if( NetEvent.lNetworkEvents == FD_READ)
{
WSAEventSelect(hSocket, (WSAEVENT) hReadEvent, 0);
return RecvDataBlock(hSocket, pszBuffer, nBufferSize);
}
}

WSAEventSelect(hSocket, (WSAEVENT) hReadEvent, 0);
CloseHandle(hReadEvent);
return -1;
}


应该是这个函数的问题!
这函数在98下支持吗?
iorikingdom 2004-12-03
  • 打赏
  • 举报
回复
楼主是不是用raw socket了?
keios 2004-12-03
  • 打赏
  • 举报
回复
用sniffer抓包看看从网卡上发出了什么数据?另一端也sniffer看看有没有收到数据

18,356

社区成员

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

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