overlapped socket

yuanmoren 2012-07-19 11:08:53
我知道WSASocket 可以创建overlapped socket.
但是用accept返回的socket,我要怎么才能保证它是overlapped的?
我怎么查询一个socket是否是overlapped?
...全文
295 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
nondeep 2013-01-08
  • 打赏
  • 举报
回复
引用 4 楼 yang79tao 的回复:
accept得到的socket与监听的socket的属性一样。 另外,winsock 1.0版本的函数,创建的socket都是带重叠属性的,WSASocket才有可能创建出不带重叠属性的socket,这一点很多人没搞懂,WSASocket其实默认创建出来的才是不带重叠属性的sokcet,而socket函数默认创建出来的,是带重叠属性的。
这个才是正解!
youngwolf 2012-07-25
  • 打赏
  • 举报
回复
楼上,accept和WSAAccept调用不是你先创建socket的,而是它返回一个socket;
AcceptEx才是你说的情况,需要先创建socket,再调用它。
MingoJ 2012-07-25
  • 打赏
  • 举报
回复
你不用纠结于判断一个socket是否是重叠模式, 因为你创建的时候就设置好了是不是,看下面代码:
// 需要使用重叠IO,必须得使用WSASocket来建立Socket,才可以支持重叠IO操作
m_pListenContext->m_Socket = WSASocket(AF_INET, SOCK_STREAM, 0, NULL, 0, WSA_FLAG_OVERLAPPED);

看到最后一个参数没有? 那表明创建的是重叠模式的IO
youngwolf 2012-07-24
  • 打赏
  • 举报
回复
accept得到的socket与监听的socket的属性一样。

另外,winsock 1.0版本的函数,创建的socket都是带重叠属性的,WSASocket才有可能创建出不带重叠属性的socket,这一点很多人没搞懂,WSASocket其实默认创建出来的才是不带重叠属性的sokcet,而socket函数默认创建出来的,是带重叠属性的。
dickbarry 2012-07-23
  • 打赏
  • 举报
回复
调用WSAAccept()时会创建一个socket,只是真正的接受connect后,会返回新的有效的socket,这个新的socket实际上就是之前创建的那个socket,只是进行了一些内部设置而已

本质上说,socket IO应该不算是socket的一部分,而是属于异步IO的范畴
yuanmoren 2012-07-20
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

WSAAccept()的是
accept的不是
[/Quote]
在msdn上我又没看到明确的说明。
如果可以查询一个socket是否是overlapped那就好了。
dickbarry 2012-07-20
  • 打赏
  • 举报
回复
WSAAccept()的是
accept的不是

18,356

社区成员

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

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