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通讯。