MFC Socket编程 select返回10038

SteveTod 2017-07-13 02:08:51
socket编程小白一枚,尝试做一个局域网互联的五子棋小游戏,服务器部分写的没问题,用测试程序可以连上,但是客户端就死活不行,select后,WSAgetlasterror返回10038,求大佬们帮我看看哪里出问题了
下面是错误部分代码(select不太会用)
USES_CONVERSION;
char *IPC = T2A(IPaddress), *PortC = T2A(Port);
int tPort = atoi(PortC);
Main->addrC.sin_family = AF_INET;
Main->addrC.sin_port = htons(tPort);
Main->addrC.sin_addr.S_un.S_addr = inet_addr(IPC);
::connect(Main->Csock, (sockaddr*)&(Main->addrC), sizeof(Main->addrC));

fd_set wfd;
struct timeval timeout;
FD_ZERO(&wfd);
timeout.tv_sec = 10;
timeout.tv_usec=0;
FD_SET(Main->Csock, &wfd);
int Res = 1;
Res = select(1, NULL, &wfd, NULL, &timeout);
if (Res == 0 || Res == SOCKET_ERROR)
{
CString temp;
int n = WSAGetLastError();
temp.Format(L"连接失败!请重试!错误%d", n);
MessageBox(temp);
}
else
{
MessageBox(L"连接成功!");
CDialogEx::OnOK();
}
...全文
212 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
SteveTod 2017-07-13
  • 打赏
  • 举报
回复
哇找出bug了,果然是无效的套接字,我忘了写Main->sock = :: socket(...)这一步,根本就没创建套接字,我真是太蠢了
SteveTod 2017-07-13
  • 打赏
  • 举报
回复
引用 3 楼 cvbtvbwu 的回复:
可以发给我,帮你调试。。
好啊!太感谢了!怎么发给你?
SteveTod 2017-07-13
  • 打赏
  • 举报
回复
引用 2 楼 oyljerry 的回复:
错误码10038(无效的套接字),而这个套接字是在程序启动的时候创建并连接的,并没有关闭掉。
额,可是这个事件发生之前并没有对于socket的操作啊...需要更多的代码吗?
叶恭介叶恭介 2017-07-13
  • 打赏
  • 举报
回复
可以发给我,帮你调试。。
oyljerry 2017-07-13
  • 打赏
  • 举报
回复
错误码10038(无效的套接字),而这个套接字是在程序启动的时候创建并连接的,并没有关闭掉。
SteveTod 2017-07-13
  • 打赏
  • 举报
回复
我用了另一个自己写的MFC的客户端程序,就可以连上服务器,为什么这就不行呢?

18,356

社区成员

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

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