套接字接受方法id like while为真

本文关键字:like while 为真 id 方法 套接字 | 更新日期: 2023-09-27 18:07:58

TcpListener tcpserver;
Socket serverSocket = tcpserver.AcceptSocket(); 

这里的第二行就像while(true),我的意思是直到任何客户端连接到tcp服务器它不会执行它下面的任何行。

我的问题是:我想通过这个tcpserver接受多个客户端,但基于像if admin_flag is TRUE这样的标志,然后接受连接,否则不会。这个标志会在任何时候被不同的线程切换。

我写这个代码:

while (true)
{
    if(admin_flag==true)
    {
        Socket serverSocket = tcpserver.AcceptSocket(); 
    }
    else
    // do something...
}

当我运行它一次,客户端得到连接。但是当admin_flag被切换,即设置为false时,它不会进入其他部分,这是因为控件保持在接受状态插座&不执行其他部分,即使它是while(TRUE)。

请指导? ?

套接字接受方法id like while为真

AcceptSocket是一个阻塞方法调用,这意味着它将阻塞正在执行的线程,直到它可以接受传入的连接。如果没有与侦听器建立连接,则调用将继续无限阻塞。

例如,您必须停止侦听器或切换到使用非阻塞BeginAcceptSocketAcceptSocketAsync方法异步接受连接。