请教EventSelect模型如何Connect?

rock1860 2007-04-18 03:16:42
学习网络编程,用EventSelect模型编写,查了很多资料都是处理接收、发送、接入链接的,没有看到过用EventSelect模型怎样连接服务器。我理解的连接应该和发送数据处理一样,就是给套接字注册FD_CONNECT事件,然后调用WaitForSingleObject等待事件触发(只是想测试一下connect怎样使用,所以只连接就行了),之后调用connection连接。可结果发现注册过的CONNECT事件并不触发,没有办法连接。以下是我的代码,测试用的写的很简单,请教如何连接。

ConnEvent=WSACreateEvent();

int rc = WSAEventSelect(
s,
ConnEvent,
FD_CONNECT | FD_CLOSE
);

rc=WaitForSingleObject(ConnEvent, INFINITE);
if (rc == WAIT_FAILED)
{
cout<<"ChildThread: WaitForSingleObject failed:%d\n"<< GetLastError());
return;
}

rc = WSAEnumNetworkEvents(
s,
ConnEvent,
&nevents
);
if (rc == SOCKET_ERROR)
{
cout<<"WSAEnumNetworkEvents error!"<<endl;
return;
}

if (nevents.lNetworkEvents & FD_WRITE)
{
if (nevents.iErrorCode[FD_CONNECT_BIT] == 0)
{
if (connect(s, (SOCKADDR *) &ServerAddr, sizeof(ServerAddr))
== SOCKET_ERROR && WSAGetLastError()!=10035)
{
cout<<"connect failed with error"<<WSAGetLastError();
closesocket(s);
WSACleanup();
return;
}
}
else
{
cout<<"connect error!"<<endl;
return;
}
}
...全文
189 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
rock1860 2007-04-18
  • 打赏
  • 举报
回复
恩明白了。connect总和别的操作不一样。谢谢楼上两位
CathySun118 2007-04-18
  • 打赏
  • 举报
回复
先调connect,根据返回的事件判断是否成功
rock1860 2007-04-18
  • 打赏
  • 举报
回复
是说先调connect,然后检查是否成功?
  • 打赏
  • 举报
回复
不是,需要自己调用connect这个函数
如果链接成功就会有一个事件好像是FD_CONNECT或FD_WRITE,具体忘了是那个了

18,356

社区成员

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

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