异步Socket编程III

来源:互联网 发布:霍金预言2600年 知乎 编辑:程序博客网 时间:2024/05/16 10:07

Socket客户端应用程序

Socket客户端应用程序在SocketClient类中实现(文件名为SocketClient.cs)。与服务器的主socket

和一组工作Socket不同,在这里,只需要一个Socket对象(m_clientSocket)。

在Socket客户端的Socket类中,有两个重要的方法Connect()和BeginReceive()。Connect()是一个同步通讯方法,在连接到监听客户端连接的服务器时调用。由于这个调用会根据是否有活跃的服务器监听指定IP和端口,及时的反映连接成功与否,因此,使用同步方法比较恰当。

一旦连接建立,会调用BeginReceive()异步通讯方法,等待服务器在Socket中写入数据。在这里,如果换做调用同步方法,那么,在客户端应用程序上的主线程会阻塞,并且,在等待服务器数据时,无法向其发送任何数据。

当有来自服务器端的写活动时,由BeginReceive()触发的内部线程会调用回调函数(以“OnDataReceived()”为例),该回调函数会处理由服务器写入的数据。

当向服务器发送数据时,只需要在m_clientSocket对象中调用Send()方法,该同步通讯方法将数据写入Socket中。

这便是多台客户端的异步Socket通讯。

 异步Socket程序代码

异步Socket程序