Sockets 在没有连接的情况下是否可以接受()返回?

Sockets 在没有连接的情况下是否可以接受()返回?,sockets,Sockets,我有一个阻塞TCP套接字,它在accept()调用中阻塞。是否可以使accept()调用返回(而不是从客户端获取连接)?这用于在系统关闭时关闭套接字并退出接受连接的线程。在flags参数中使用SOCK\u NONBLOCK:在flags参数中使用SOCK\u NONBLOCK:1)在单线程程序中,您可以使用来自另一个进程的信号。在安装信号处理程序时,请确保未通过SA_重新启动标志 2) 如果需要从同一进程的另一个线程停止accept(),请创建一个套接字对或管道,并在套接字和该管道上阻塞sele

我有一个阻塞TCP套接字,它在
accept()
调用中阻塞。是否可以使
accept()
调用返回(而不是从客户端获取连接)?这用于在系统关闭时关闭套接字并退出接受连接的线程。

在flags参数中使用SOCK\u NONBLOCK:

在flags参数中使用SOCK\u NONBLOCK:

1)在单线程程序中,您可以使用来自另一个进程的信号。在安装信号处理程序时,请确保未通过SA_重新启动标志

2) 如果需要从同一进程的另一个线程停止
accept()
,请创建一个套接字对或管道,并在套接字和该管道上阻塞
select()
。当需要解除阻塞时,向管道中写入一些内容

3) 或者只需使用带有一些小超时(1秒)的
select()
,并在每次返回时轮询退出标志。

1)在单线程程序中,您可以使用来自另一个进程的信号。在安装信号处理程序时,请确保未通过SA_重新启动标志

2) 如果需要从同一进程的另一个线程停止
accept()
,请创建一个套接字对或管道,并在套接字和该管道上阻塞
select()
。当需要解除阻塞时,向管道中写入一些内容


3) 或者只需使用带有一些小超时(1秒)的
select()
,并在每次返回时轮询退出标志。

在windows中,如果您关闭接受连接(call closesocket()),WSA将取消接受(接受将返回无效的\u套接字)。

在windows中,WSA将取消接受(接受将返回无效的\u套接字)如果关闭接受连接(调用closesocket())。

将其设置为非阻塞套接字..?将其设置为非阻塞套接字..?@Maanu具有阻塞套接字,这将使其成为非阻塞套接字。实际上,这只会影响新的客户端套接字。您希望在创建初始服务器套接字时在其上使用此标志:@Maanu具有阻塞套接字,这将使其成为非阻塞的,实际上,这只会影响新的客户端套接字。创建初始服务器套接字时,要在其上使用此标志: