接下来是服务器部分,采用异步模式,新建了一个AsynServer类,用于存放socket服务器代码,主要有4个方法:

有一个全局socket,下面四个方法中都用到。

Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);

类框架如下:

Socket异步通信学习二

1.构造方法public AsynServer(IPEndPoint endpoint,int listenMaxNum)

  用于初始化socket服务器,IPEndPoint参数是socket绑定的终结点,listenMaxNum参数是监听队列的挂起的最大长度,代码如下:

  public AsynServer(IPEndPoint endpoint,int listenMaxNum)
        {       
                socket.Bind(endpoint);      //绑定终结点
                socket.Listen(listenMaxNum);//将socket至于侦听状态,设置挂起队列最大值为listenMaxNum
                Console.WriteLine("正在连接客户端....");
                AsynAccept();         //开始异步监听
       //     return socket;
        }

2.异步监听方法public void AsynAccept()

public void AsynAccept()
        {
                socket.BeginAccept(asyncResult => {
                socket = socket.EndAccept(asyncResult);         //异步监听成功,返回socket
                Console.WriteLine("客户端{0}异步连接成功", socket.RemoteEndPoint.ToString());            
                AsynReceive();
                    AsynSend("Server:Hello,client!");
            }, null);
        }
View Code

相关文章: