请教Socket类BeginConnect方法和ConnectAsync方法的区别

火星熊猫 2009-12-08 03:04:34
Socket类 有一个BeginConnect方法 还有一个 ConnectAsync方法。
这两个方法的MSDN解释 是
BeginConnect 已重载。 开始一个对远程主机连接的异步请求。
ConnectAsync 开始一个对远程主机连接的异步请求。
看上去似乎是一样的。

除了BeginConnect 需要和 EndConnect方法配套使用
ConnectAsync 和 SocketAsyncEventArgs类配套使用之外,没明白这两个方法的区别和用意。
...全文
3039 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaobosuzhou 2012-08-17
  • 打赏
  • 举报
回复
受益匪浅
火星熊猫 2009-12-09
  • 打赏
  • 举报
回复
好吧 暂时不去考虑这个问题了
悔说话的哑巴 2009-12-08
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 marscat1311 的回复:]
XXXAsync系列操作对单socket的客户端来说其实没有太大的作用?
[/Quote]
肯定有用撒,青龙说的很明白了
qldsrx 2009-12-08
  • 打赏
  • 举报
回复
这和是否单客户端有什么关系啊,只不过你不想想得那么深的话,就别考虑它,说真的,外面没有现成的项目是用XXXAsync系列做的,一方面是它出来的比较晚,另一方面是它技术难度较高,不是可以普遍使用,容易上手的方法。
abaochan 2009-12-08
  • 打赏
  • 举报
回复
谢谢你
jiejie526 2009-12-08
  • 打赏
  • 举报
回复 1
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 向特定远程主机异步发送数据

火星熊猫 2009-12-08
  • 打赏
  • 举报
回复
XXXAsync系列操作对单socket的客户端来说其实没有太大的作用?
火星熊猫 2009-12-08
  • 打赏
  • 举报
回复
重新读了SocketAsyncEventArgs的帮助,是否可以这么理解XXXAsync系列的操作,主要是为服务器程序设计的?
cstester 2009-12-08
  • 打赏
  • 举报
回复
mark up
.
qldsrx 2009-12-08
  • 打赏
  • 举报
回复
另外XXXAsync还可以读取当前Socket状态,不会产生任何Socket通讯中的异常,所有Socket异常都换成Socket状态的改变来告知程序,通过SocketAsyncEventArgs类,还可以传递委托来进行一次数据交换后的后续操作。
qldsrx 2009-12-08
  • 打赏
  • 举报
回复
ConnectAsync归类于XXXAsync系列操作,提供更高效的Socket操作,完全不同于以往的操作方式。

以往的Socket操作都是需要接收发送字节,这些接收发送的字节要单独复制给相应的方法来发送,对于大量数据传输,字节的复制容易产生碎片,降低效率。所以出现了XXXAsync,它可以重复里面已经有的字节缓冲区发送或者接收,通过偏移和长度来控制接收发送数据的多少。具体操作方法请见MSDN。

111,094

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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