.Net3.5新的Socket异步模式总结

来源:互联网 发布:ie内核浏览器for mac 编辑:程序博客网 时间:2024/04/29 02:42

 1)新的异步方法为:xxxAsync(xxx 为Receive,Send,Accept);方法参数为SocketAsyncEventArgs

2)SocketAsyncEventArgs的重点:

SetBuff方法:设置将进行异步操作的数据区;当Receive操作时,如果该缓冲区设置过小,则Receive操作会作几次返回,即每次返回的BytesTransferred不会超过设置的Buffer长度

UserToken属性:可以设置任意的用户对象,当异步操作返回后(通过调用回调函数),可获取该对象取得相应状态,由于AsyncEventArgs不保存socket信息,一般这里面至少要保存该连接的Socket

Completed事件:这个事件触发,代表异步操作完成

AcceptSocket:对应AcceptAsync接收连接的客户端Socket

3)当已经调用异步操作后,其对应的SocketAsyncEventArgs的成员属性不能被修改(改了不起作用,但会影响下一次异步操作),但是可以在异步操作返回后(即在回调函数内部)改变其属性

4)对Receive的回调函数,可在这里进行协议判断,把完整的数据包取出来,如果获取的数据包并不完整,则可以通过SetBuffer改变Buffer下次接收的Offset,使下次接收操作中,在当前的Buffer后面附加数据。但是注意,这里设置的Offset长度不能超过对应Buffer的最大长度,否则下次接收时会出错,导致客户端连接断开

原创粉丝点击