首页
社区
课程
招聘
[旧帖] udp写的c/s程序 recvfrom返回-1,错误码10054 0.00雪花
发表于: 2014-6-28 22:59 5122

[旧帖] udp写的c/s程序 recvfrom返回-1,错误码10054 0.00雪花

2014-6-28 22:59
5122
基于udp写的c/s程序,client为exe, sendto之后 select 返回 1  recvfrom能够收到数据,同样的代码放在LSP的dll中, sendto之后 select 返回 1  recvfrom返回-1,错误码10054。不解,谢谢 。

iLen = sendto(s, buffer, 16 0, (sockaddr*)&server, iLen);
                int error = WSAGetLastError();
                if ( SOCKET_ERROR == iLen )
                {
                        break;
                }
               
                int nsel = select(0, &wfds, NULL, NULL, &tv);
                if ( 0 >= nsel )
                {
                        。。。
                }

                if(FD_ISSET(s,&wfds))
                {
                        memset(buffer, 0, sizeof buffer);
                        int len = sizeof sockaddr;
                        iLen = recvfrom(s, buffer, sizeof buffer,  0, NULL, NULL);
}

[课程]Android-CTF解题方法汇总!

收藏
免费 0
支持
分享
最新回复 (4)
雪    币: 2
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
2
LSP的里面的函数是recvfrom函数么
2014-6-29 00:13
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
3
是的 。
2014-6-29 00:24
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
4
DWORD dwBytesReturned = 0;
                BOOL bNewBehavior = FALSE;
                DWORD status;

#define SIO_UDP_CONNRESET _WSAIOW(IOC_VENDOR,12)

                status = WSAIoctl(s, SIO_UDP_CONNRESET,
                        &bNewBehavior, sizeof(bNewBehavior),
                        NULL, 0, &dwBytesReturned,
                        NULL, NULL);

                if (SOCKET_ERROR == status)
                {
                        DWORD dwErr = WSAGetLastError();
                        if (WSAEWOULDBLOCK == dwErr)
                        {
                                // nothing to do
                                return(FALSE);
                        }
                        else
                        {
                                printf("WSAIoctl(SIO_UDP_CONNRESET) Error: %d/n", dwErr);
                                return(FALSE);
                        }
                }
网上说,10054是微软的bug,如上设置后,exe中select返回1,dll中的select 返回0
2014-6-29 00:26
0
雪    币: 19
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
5
此问题非常奇怪
2014-6-29 10:14
0
游客
登录 | 注册 方可回帖
返回
//