社区
网络编程
帖子详情
关于异步套接字和同步套接字
qq51931375
2009-07-02 05:40:37
大家好~
我想问下:
1.异步套接字和同步套接字分别在什么情况下使用?
2.和select联合使用的是异步套接字,还是同步套接字?
谢谢回复 ~~
...全文
976
9
打赏
收藏
关于异步套接字和同步套接字
大家好~ 我想问下: 1.异步套接字和同步套接字分别在什么情况下使用? 2.和select联合使用的是异步套接字,还是同步套接字? 谢谢回复 ~~
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
9 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
baobaodediaozhui
2012-01-14
打赏
举报
回复
lz可能不知道有结贴这一说。。。。
JamyLou
2011-07-04
打赏
举报
回复
楼上好牛,是党的人来着
Eleven
2010-05-17
打赏
举报
回复
结贴通知:
请lz注意结贴。。。。
tlmiai
2010-03-22
打赏
举报
回复
正在学习这方面的东西,很有帮助
wiresharker
2009-07-03
打赏
举报
回复
select是通过轮询方式检测每个socket是否可读、可写
和socket的阻塞、非阻塞属性没有关系。
阻塞、非阻塞属性是描述socket读写数据的一种方式。
(个人理解)
dong364
2009-07-03
打赏
举报
回复
1. 使用WSASocket时, 经常将dwFlags设置为WSA_FLAG_OVERLAPPED, 这样可形成overlapped socket, 于是可使用WSASend, WSARecv, WSASendTo, WSARecvFrom, WSAIoctl这些函数; 使用socket时, 一般使用accept, send, sendfrom, recv, recvfrom较多, 因为::socket()函数不提供dwFlags, 当然也可使用WSA系列函数(将关于overlapped的参数置NULL). WSA系列函数是非阻塞型的所以立即返回, 一般多在异步IO模型中使用, 像send, sendfrom等这样的阻塞型函数往往多见于单一通信或在client端使用.
2. select模型不太常用, 可使用::socket()创建
Gothic_girl
2009-07-02
打赏
举报
回复
同步所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。按照这个定义,其实绝大多数函数都是同步调用(例如sin, isdigit等)。但是一般而言,我们在说同步、异步的时候,特指那些需要其他部件协作或者需要一定时间完成的任务。最常见的例子就是 SendMessage。该函数发送一个消息给某个窗口,在对方处理完消息之前,这个函数不返回。当对方处理完毕以后,该函数才把消息处理函数所返回的 LRESULT值返回给调用者。
异步异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。以CAsycSocket类为例(注意,CSocket从CAsyncSocket派生,但是起功能已经由异步转化为同步),当一个客户端通过调用Connect函数发出一个连接请求后,调用者线程立刻可以朝下运行。当连接真正建立起来以后,socket底层会发送一个消息通知该对象。
Gothic_girl
2009-07-02
打赏
举报
回复
同步指的是发送方不等接收方响应,便接着发下个数据包的通信方式
异步指发送方发出数据后,等收到接收方发回的响应,才发下一个数据包的通信方式。
相关概念:
阻塞套接字是指执行此套接字的网络调用时,直到成功才返回,否则一直阻塞在此网络调用上,比如调用recv()函数读取网络缓冲区中的数据,如果没有数据到达,将一直挂在recv()这个函数调用上,直到读到一些数据,此函数调用才返回;
非阻塞套接字是指执行此套接字的网络调用时,不管是否执行成功,都立即返回。比如调用recv()函数读取网络缓冲区中数据,不管是否读到数据都立即返回,而不会一直挂在此函数调用上。
在实际Windows网络通信软件开发中,异步非阻塞套接字是用的最多的。平常所说的C/S(客户端/服务器)结构的软件就是异步非阻塞模式的。
写不动代码的人
2009-07-02
打赏
举报
回复
http://hi.baidu.com/vc_net/blog/item/eceb4954ee30405c574e0070.html
16线程
同步
和
异步
套接字
http://blog.sina.com.cn/s/articlelist_1815328704_0_1.html 第16课 1.事件对象:来实现线程的
同步
。与互斥对象一样均属于内核对象。 当人工重置有信号时,所有线程均得到信号,所以不能设为人工重置。代码就不贴了。 通过创建匿名的事件对象,也可以让一个程序只能运行一个实例。 2.关键代码段实现线
线程
同步
和线程
异步
&
同步
套接字
异步
套接字
线程
同步
和线程
异步
有什么区别?(重要基础知识) 打个比方,如果你在等一个人,
同步
的时候,你会一直等到她来了之后才做其他事情,这个过程除了等待你啥都不会做,
异步
的时候,你一边在等,可能一边玩游戏或者是看报纸什么的,一直到她到来,你的等待状态才会结束 在实现上,
同步
的过程会阻塞进程的所有其他操作,将
同步
转换为
异步
的最常见方法则是 将会阻塞进程的等待操作放入到一个新的进程中,同时为该等待操
孙鑫MFC笔记教程(16)--线程
同步
和
异步
套接字
编程
线程
同步
有三种方式:1. 互斥对象涉及方法:HANDLE hMutex=CreateMutex(NULL,FALSE,NULL); //第二个参数为FALSE,将互斥对象声明为空闲状态WaitForSingleObject(hMutex,INFINITE); //第二个参数为INFINITE表示一直等待,直到拥有互斥对象ReleaseMutex(hMutex); //使用
孙鑫MFC笔记之十四--多线程
同步
与
异步
套接字
编程
线程
同步
有三种方式: 1. 互斥对象涉及方法: HANDLE hMutex=CreateMutex(NULL,FALSE,NULL);//第二个参数为FALSE,将互斥对象声明为空闲状态 WaitForSingleObject(hMutex,INFINITE);//第二个参数为INFINITE表示一直等待,直到拥有互斥对象 ReleaseMutex(hMutex);//使用...
Lesson 16 线程
同步
与
异步
套接字
1. 事件对象 事件对象同上一课中的互斥对象一样属于内核对象,它包含三个成员:使用读数,用于指明该事件是一个自动重置的还是人工重置的事件的布尔值,用于指明该事件处于已通知状态还是未通知状态的布尔值. 当人工重置的事件对象得到通知时,等待该事件对象的所有纯种无变为可高度线程,而一个自动重置的事件对象得到通知时,等待该事件对象的线程中人有一个变为可高度线程.所以一般使用线程
同步
网络编程
18,356
社区成员
64,165
社区内容
发帖
与我相关
我的任务
网络编程
VC/MFC 网络编程
复制链接
扫一扫
分享
社区描述
VC/MFC 网络编程
c++
c语言
开发语言
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章