C#里实现简单的异步TCP服务器

C#里实现简单的异步TCP服务器

在前面实现阻塞式的TCP服务器,比较容易理解,解决简单的问题够用了。
但是如果面对多个连接,多个客户端的处理,就不行了。
这时候就要采用异步的TCP服务器,或者多任务,多线程的服务器。

在这里采用了TcpListener来接收网络连接,采用TcpClient来与客户端进行通讯。
由于可以同时连接多个客户端,那么就需要定义一个对象来表示这个连接,这个对象就是
TCPClientState。

由于本类进行封装,外面又需要对数据进行处理,那么通过什么方式来通知外面呢?
在这里通过事件来进行触发。所以要使用这个类,就必须创建对应的事件响应函数,
比如连接、断开连接、接收数据、数据发送完成等等。

所以创建下面的事件响应代码:
 //有连接进来        
        public void ClientConnected(object sender, EventArgs e)
        {
            AsyncEventArgs args = e as AsyncEventArgs;
            System.Diagnostics.Debug.WriteLine("ClientConnected");
        }
        //有连接断开
        public void ClientDisconnected(object sender, EventArgs e)
        {
            AsyncEventArgs args = e as AsyncEventArgs;
            System.Diagnos