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

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

除了BeginConnect 需要和 EndConnect方法配套使用
ConnectAsync 和 SocketAsyncEventArgs类配套使用之外,没明白这两个方法的区别和用意。
...全文
3210 11 打赏 收藏 转发到动态 举报
写回复
用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。
随着通信电子技术的迅速发展,信息技术给家居行业产生了深远的影响,家居环境的智能化监控已经成为智能家居的一个重要的发展方向。人们逐渐对自己的生活提出一种更高的要求,他们需要一种智能化、可交互,并且融合现代创新科技的产品来改善他们的生活环境,使他们生活更加安全、舒适、便捷、智能。本文根据智能家居的发展背景和研究现状,并且从实用性和可行性角度出发,研究设计了一种基于STM32单片机的智能家居系统。该系统由一个多功能综合的技术系统组成,各个多功能子系统间具有协同配合能力。基于STM32单片机实现的功能子系统包括:智能温度检测,智能湿度检测,智能烟雾/火灾检测智能检测,无线传输,人机交互机构,风扇调节,报警模块。 整个系统分为前端51单片机采集板和后端STM32单片机接收板。 采集板使用DHT11温湿度传感器、MQ烟雾传感器完成室内家居环境的采集。然后通过nRFL24L01将采集到的数据发送给后端。接收板使用LCD1602完成数据显示、使用蜂鸣器模块报警,使用风扇驱动模块调节室内家居环境。本文完成了智能家居控制系统前端、后端软硬件的设计,使用Altium designer绘制了电路原理图,使用Keil C完成了51单片机和STM32单片机的编程与调试。 最后,对本文设计的基于STM32的智能家居控制系统进行部署调试。试验结果表明,该系统可成功应用在智能家居环境检测调节和火灾安全防护的领域,可提高家居生活智能化水平。

111,129

社区成员

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

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

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