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

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

除了BeginConnect 需要和 EndConnect方法配套使用
ConnectAsync 和 SocketAsyncEventArgs类配套使用之外,没明白这两个方法的区别和用意。
...全文
2627 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。
前 言 6 第1章 进程、线程与网络协议 7 1.1 进程和线程 7 1.1.1 Process 7 1.1.2 Thread 9 1.1.3 在一个线程中操作另一个线程的控件 13 1.2 IP地址与端口 15 1.2.1 TCP/IP网络协议 16 1.2.2 IPAddress与Dns 17 1.2.3 IPHostEntry 17 1.2.4 IPEndPoint 17 1.3 套接字 19 1.3.1 Socket 20 1.3.2 面向连接的套接字 21 1.3.3 无连接的套接字 23 1.4 网络流 24 1.5 习题1 25 第2章 TCP应用编程 27 2.1 同步TCP应用编程 28 2.1.1 使用套接字发送和接收数据 28 2.1.2 使用NetworkStream对象发送和接收数据 30 2.1.3 TcpClient与TcpListener 31 2.1.4 解决TCP协议的无消息边界问题 33 2.2 利用同步TCP编写网络游戏 34 2.2.1 服务器端编程 34 2.2.2 客户端编程 49 2.3 异步TCP应用编程 66 2.3.1 EventWaitHandle 67 2.3.2 AsyncCallback委托 69 2.3.3 BeginAcceptTcpClient方法和EndAcceptTcpClient方法 70 2.3.4 BeginConnect方法和EndConnect方法 70 2.3.5 发送数据 71 2.3.6 接收数据 72 2.4 异步TCP聊天程序 73 2.4.1 服务器端设计 73 2.4.2 客户端设计 79 2.5 习题2 83 第3章 UDP应用编程 84 3.1 UDP协议基础知识 84 3.2 UDP应用编程技术 84 3.2.1 UdpClient 84 3.2.2 发送和接收数据的方法 86 3.3 利用UDP协议进行广播和组播 90 3.3.1 通过Internet实现群发功能 90 3.3.2 在Internet上举行网络会议讨论 96 3.4 习题3 101 第4章 P2P应用编程 102 4.1 P2P基础知识 102 4.2 P2P应用举例 104 4.3 习题4 114 第5章 SMTP与POP3应用编程 115 5.1 通过应用程序发送电子邮件 115 5.1.1 SMTP协议 115 5.1.2 发送邮件 116 5.2 利用同步TCP接收电子邮件 120 5.2.1 POP3工作原理 121 5.2.2 邮件接收处理 123 5.3 习题5 127 第6章 网络数据加密与解密 128 6.1 对称加密 128 6.2 不对称加密 133 6.3 通过网络传递加密数据 136 6.4 Hash算法与数字签名 152 6.5 习题6 153 第7章 三维设计与多媒体编程 154 7.1 简单的3D设计入门 154 7.2 DirectX基础知识 160 7.2.1 左手坐标系与右手坐标系 160 7.2.2 设备 160 7.2.3 顶点与顶点缓冲 161 7.2.4 Mesh对象 162 7.2.5 法线 162 7.2.6 纹理与纹理映射 162 7.2.7 世界矩阵、投影矩阵与视图矩阵 162 7.2.8 背面剔除 164 7.3 Primitive 164 7.4 Mesh 171 7.5 灯光与材质 177 7.6 音频与视频 187 7.7 直接使用SoundPlayer播放WAV音频文件 191 7.8 习题7 193 第8章 上机实验指导 194 8.1 实验一 简单网络聊天系统 194 8.2 实验二 网络呼叫应答提醒系统 195 8.3 实验三 文件数据加密与解密 199
第1章 进程、线程与网络协议  1.1 进程和线程  1.1.1 Process  1.1.2 Thread  1.1.3 在一个线程中操作另一个线程的控件 1.2 IP地址与端口  1.2.1 TCP/IP  1.2.2 IPAddress与Dns  1.2.3 IPHostEntry  1.2.4 IPEndPoint  1.3 套接字  1.3.1 Socket  1.3.2 面向连接的套接字  1.3.3 无连接的套接字  1.4 网络流  习题  第2章 TCP应用编程  2.1 同步TCP应用编程  2.1.1 使用套接字发送和接收数据  2.1.2 使用NetworkStream对象发送和接收数据  2.1.3 TcpClient与TcpListener  2.1.4 解决TCP的无消息边界问题  2.2 利用同步TCP编写网络游戏  2.2.1 服务器端编程  2.2.2 客户端编程  2.3 异步TCP应用编程  2.3.1 EventWaitHandle  2.3.2 AsyncCallback委托  2.3.3 BeginAcceptTcpClient方法和EndAcceptTcpClient方法  2.3.4 BeginConnect方法和EndConnect方法  2.3.5 发送数据  2.3.6 接收数据  2.4 异步TCP聊天程序  2.4.1 服务器端设计  2.4.2 客户端设计  习题  第3章 UDP应用编程  3.1 UDP基础知识  3.2 UDP应用编程技术  3.2.1 UdpClient  3.2.2 发送和接收数据的方法  3.3 利用UDP进行广播和组播  3.3.1 通过Internet实现群发功能  3.3.2 在Internet上举行网络会议讨论  习题  第4章 P2P应用编程  4.1 P2P基础知识  4.2 P2P应用举例  习题  第5章 SMTP与POP3应用编程  5.1 通过应用程序发送电子邮件  5.1.1 SMTP  5.1.2 发送邮件  5.2 利用同步TCP接收电子邮件  5.2.1 POP3工作原理  5.2.2 邮件接收处理  习题  第6章 网络数据加密与解密  6.1 对称加密  6.2 不对称加密  6.3 通过网络传递加密数据 6.4 Hash算法与数字签名  习题  第7章 三维设计与多媒体编程  7.1 简单的3D设计入门  7.2 DirectX基础知识  7.2.1 左手坐标系与右手坐标系  7.2.2 设备  7.2.3 顶点与顶点缓冲  7.2.4 Mesh对象  7.2.5 法线  7.2.6 纹理与纹理映射  7.2.7 世界矩阵、投影矩阵与视图矩阵  7.2.8 背面剔除  7.3 Primitive  7.4 Mesh  7.5 灯光与材质  7.6 音频与视频  7.7 直接使用SoundPlayer播放WAV音频文件  习题

110,534

社区成员

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

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

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