zoukankan      html  css  js  c++  java
  • TCPListener.AcceptTcpClient阻塞进程退出方法

       private void btnStop_Click(object sender, RoutedEventArgs e)
                  {
                     bIsExecute = false; //此处拆除循环条件
    
                  
                //方法1:直接停止监听套接字,引发异常从而强行使Accept退出阻塞。
                //---------------------------------------------
                //if (listener != null)
                //{
                //    listener.Stop();
                //}
                //---------------------------------------------
     
                
                //方法2:主动发送一条数据,使Accept自然地退出阻塞。
                //---------------------------------------------
                TcpClient tcpClient = new TcpClient();
                tcpClient.Connect("127.0.0.1",9000);
     
                NetworkStream ns = tcpClient.GetStream();
                if (ns.CanWrite)
                {
                    Byte[] sendBytes = Encoding.ASCII.GetBytes("Exit");
                    ns.Write(sendBytes, 0, sendBytes.Length);
                    lbMsg.Items.Add("发送退出命令成功!");
                }
                else
                {
                    lbMsg.Items.Add("发送退出命令失败!");
                    return;
                }
                ns.Close();
                tcpClient.Close();
                //---------------------------------------------
     
                btnStart.IsEnabled = true;
                btnStop.IsEnabled = false;
            }
    

    ————————————————
    版权声明:本文为CSDN博主「西刷君」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/yijun494610095/java/article/details/55257787

  • 相关阅读:
    获取网站IP地址(Linux,C)
    linux_c_udp_example
    linux_c_tcp_example
    golang-sort
    docker_jenkins
    依赖抽象,而不要依赖具体实现
    网络杂记
    游戏开发中遇到的问题
    随手杂记
    go多态
  • 原文地址:https://www.cnblogs.com/swobble/p/13023765.html
Copyright © 2011-2022 走看看