关于C# socket的BeginConnect的应用

.Net技术 码拜 10年前 (2015-02-27) 5350次浏览 0个评论

当调用socketBeginConnect方法时发生了什么?什么情况下需要使用BeginConnect

关于C# socket的BeginConnect的应用
你想接收数据,就要先链接,等待链接成功,再接收
关于C# socket的BeginConnect的应用
15分
所有的异步方法(beginconnect,beginaccept,beginrecieve),都是将操作添加进队列里等待系统线程池调用
可能会使用当前线程在空闲时调用,也可能开启另一个线程执行,总之它区别于”同步阻塞”,并不等待执行完毕就继续执行后续代码了
关于C# socket的BeginConnect的应用
引用 2 楼 Z65443344 的回复:

所有的异步方法(beginconnect,beginaccept,beginrecieve),都是将操作添加进队列里等待系统线程池调用
可能会使用当前线程在空闲时调用,也可能开启另一个线程执行,总之它区别于”同步阻塞”,并不等待执行完毕就继续执行后续代码了

多谢回答。请问是否当调用Beginconnect时就向远程主机发送了连接请求,还是执行完Beginconnect以后,由系统在某一时刻去向远程主机发送连接请求?如果是后者,那么系统在什么时候发送这个连接请求,回调函数又是什么时候被系统调用的呢?EndConnect被调用就能说明连接成功了吗?

关于C# socket的BeginConnect的应用
因为是异步的,所以你没法确定系统到底什么时候去调用,有可能立即使用了线程池中一个空闲线程去调用,也可能线程池已满,要等到其他线程执行完毕才会被调用.
回调函数当然是在执行完毕才被执行的,EndConnect只是告诉系统,不再异步执行,改为同步执行后续代码.
关于C# socket的BeginConnect的应用
5分
BeginXXXX,只是分配分配线程,EndXXXX才会真正执行相关任务。
关于C# socket的BeginConnect的应用
Begin*** 这样的方法都是异步方法,区别于同步方法,这种方法不会阻塞当前线程,可以调用 End*** 去同步结束这个方法,也可以通过注册事件来得到方法完成的通知。

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明关于C# socket的BeginConnect的应用
喜欢 (0)
[1034331897@qq.com]
分享 (0)

文章评论已关闭!