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

Socket网络编程第一篇:

本文主要是以代码为主。

.NET技术交流群 199281001 .欢迎加入

 

复制代码
 1       //负责监听的套接字
private Socket socketServer;
     //通知一个或多个正在等待的线程已发生事件。
    ManualResetEvent manager = new ManualResetEvent(false); 2 /// <summary> 3 /// 启动服务 4 /// </summary> 5 private void CreateSocketService() 6 { 7 try 8 { 9 //获取IP 10 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 //设置监听队列的长度 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;
         //将事件状态设置为终止状态,允许一个或多个等待线程继续。
         manager.Set(); 7 //开始接受消息....... 8 }
复制代码
1    private void ShowMsg(string msg)
2         {
3            //显示消息
4             txtConneMsg.AppendText("\r\n" + DateTime.Now + "\r\n\r\n" + msg + "\r\n");
5         }    

 

 

 

 

 

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

待续......

 

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

转载于:https://www.cnblogs.com/U188/p/3860166.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值