首页 > 代码库 > Socket基础之-启动异步服务侦听

Socket基础之-启动异步服务侦听

本文主要是以代码为主。.NET技术交流群 199281001 .欢迎加入。

//通知一个或多个正在等待的线程已发生事件。ManualResetEvent manager = new ManualResetEvent(false);

 

 1         //负责监听的套接字
private Socket socketServer; 2 /// <summary> 3 /// 启动服务 4 /// </summary> 5 private void CreateSocketService() 6 { 7 try 8 { 9 //获取IP10 var address = IPAddress.Parse(txtIP.Text.Trim());11 //创建一个包含ip port 的网络节点对象12 var ipPoint = new IPEndPoint(address, Convert.ToInt32(txtPort.Text.Trim()));13 //创建一个套接字socket,参数(IP4寻址协议,流式连接,使用TCP协议传输数据)14 socketServer = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);15 //将负责监听的套接字绑定到唯一的IP和端口上16 socketServer.Bind(ipPoint);17 //设置监听队列的长度,同时100个队列18 socketServer.Listen(100);19 //线程开始监听客户端的请求20 threadService = new Thread(StartSocketService);21 //设置线程为后台线程22 threadService.IsBackground = true;23 //启动线程24 threadService.Start();25 //显示消息26 ShowMsg("服务器监听开启成功!");27 28 29 }30 catch (Exception e)31 {32
33 ShowMsg(e.Message);34 }35 }
 1        /// <summary> 2         /// 启动服务监听 3         /// </summary> 4         private void StartSocketService() 5         { 6             while (true) 7             { 8                 try 9                 {
              //将事件状态设置为非终止状态,导致线程阻止
10 manager.Reset();11 //开始监听客户端的连接请求12 var args = new SocketAsyncEventArgs();13 args.Completed += args_Completed;14 socketServer.AcceptAsync(args);
              //阻止当前线程,直到当前 WaitHandle 收到信号。
15 manager.WaitOne();16 }17 catch (Exception ex)18 {19 20 ShowMsg(ex.Message);21 break;22 }23 }24 }
1         void args_Completed(object sender, SocketAsyncEventArgs e)2         {3             //监听完成客户端的请求,一但监听到返回新的套接字4             var clientSocket = e.AcceptSocket;5             //启动线程获取客户端发来的消息6             if (clientSocket == null) return;
         //开始接受消息.......
7       //该函数未写完,第二篇补全
8 }
1         void ShowMsg(string message)2         {3            //显示消息4             txtConneMsg.AppendText("\r\n" + DateTime.Now + "\r\n\r\n" + message + "\r\n");5         }    

 

 

ok 服务监听就启动成功了,正等待客户端连接。

 

待续。下一篇:Socket基础(二) 之 服务器异步接收消息

 

作者:gaobing
 
出处: http://gaobing.cnblogs.com
 
提示:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。