日期:2014-05-18  浏览次数:21394 次

请教Socket类BeginConnect方法和ConnectAsync方法的区别
Socket类 有一个BeginConnect方法 还有一个 ConnectAsync方法。
这两个方法的MSDN解释 是
BeginConnect 已重载。 开始一个对远程主机连接的异步请求。 
ConnectAsync 开始一个对远程主机连接的异步请求。 
看上去似乎是一样的。

除了BeginConnect 需要和 EndConnect方法配套使用
ConnectAsync 和 SocketAsyncEventArgs类配套使用之外,没明白这两个方法的区别和用意。

------解决方案--------------------
ConnectAsync归类于XXXAsync系列操作,提供更高效的Socket操作,完全不同于以往的操作方式。

以往的Socket操作都是需要接收发送字节,这些接收发送的字节要单独复制给相应的方法来发送,对于大量数据传输,字节的复制容易产生碎片,降低效率。所以出现了XXXAsync,它可以重复里面已经有的字节缓冲区发送或者接收,通过偏移和长度来控制接收发送数据的多少。具体操作方法请见MSDN。
------解决方案--------------------
mark up
.
------解决方案--------------------
Socket.BeginAccept 开始一个异步操作来接受一个传入的连接尝试
Socket.BeginConnect 开始一个对远程主机连接的异步请求
Socket.BeginDisconnect 开始异步请求从远程终结点断开连接

Socket.EndAccept 异步接受传入的连接尝试
Socket.EndConnect 结束挂起的异步连接请求
Socket.EndDisconnect 结束挂起的异步断开连接请求

Socket.BeginReceive 开始从连接的Socket中异步接收数据
Socket.BeginReceiveFrom 开始从指定网络设备中异步接收数据
Socket.BeginReceiveMessageFrom 开始使用指定的SocketFlags将指定字节数的数据异步接收到数据缓冲区的指定位置,然后存储终结点和数据包信息

Socket.EndReceive 结束挂起的异步读取
Socket.EndReceiveFrom 结束挂起的、从特定终结点进行异步读取
Socket.EndReceiveMessageFrom 结束挂起的、从特定终结点进行异步读取。此方法还显示有关数据包而不是 EndReceiveFrom 的更多信息

Socket.BeginSend 将数据异步发送到连接的Socket
Socket.BeginSendFile 将文件异步发送到连接的Socket对象
Socket.BeginSendTo 向特定远程主机异步发送数据


------解决方案--------------------
谢谢你
------解决方案--------------------
探讨
XXXAsync系列操作对单socket的客户端来说其实没有太大的作用?