是否可以在套接字上取消?

Dav*_*ney 12 sockets linux posix listen

在调用listen(fd,backlog)后,是否可以在套接字上取消删除?

编辑:我没有弄清楚自己的错误.我希望能够暂时解除套接字的问题.调用close()将使套接字处于M2LS状态并阻止我重新打开它(或者更糟糕的是,某些恶意程序可能绑定到该套接字)

暂时不显示将是向上游负载均衡器发出信号的一种方式(可能不是最佳方式)此应用无法接受此刻的任何更多请求

小智 5

关闭套接字后,你的程序可能仍然告诉你套接字"正在使用",这是因为我不确切知道一些奇怪的问题.但是有关套接字的联机帮助页显示,有一个标志可以重用同一个套接字,懒得称之为:"SO_REUSEADDR".使用"setsockopt()"设置它.


And*_*son 5

某些套接字库允许您专门拒绝传入连接。例如:GNU的CommonC++:TCPsocket类有一个reject方法。

BSD Sockets 没有这个功能。您可以接受连接,然后立即关闭它,同时保持套接字打开:

while (running) {

  int i32ConnectFD = accept(i32SocketFD, NULL, NULL);
  while (noConnectionsPlease) {
    shutdown(i32ConnectFD, 2);
    close(i32ConnectFD);
    break;
  }

}
Run Code Online (Sandbox Code Playgroud)