接下来是服务器部分,采用异步模式,新建了一个AsynServer类,用于存放socket服务器代码,主要有4个方法:
有一个全局socket,下面四个方法中都用到。
Socket socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);
类框架如下:
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); }