0

我需要制作一个同时作为服务器和客户端的脚本。

这需要从倾听到尝试连接交替进行。

有没有办法在进入客户端模式并尝试连接时暂时阻止任何客户端连接?

据我所知,只有一种永久性的方法可以阻止这种情况,即重新开始倾听,我正在努力避免这种情况。

这个想法是这将在多个服务器上运行,并且必须连接到自身。

每次建立连接时,一旦他们交换了他们需要交换的内容,每一方都会从(客户端/目的地)列表中删除另一方。

因此,我需要一种方法来阻止侦听器,因为它在极少数情况下尝试连接,因为在极少数情况下,两个尝试在完全相同的时间相互连接并购买了等待被拾取的挂起,但这并没有发生。

4

1 回答 1

0

你可以这样做:

  • close() 监听套接字(可能在需要时重新打开它)
  • 如果侦听套接字变得可读,则不要调用 accept() (您可以在几秒钟内摆脱这个,但它确实使用操作系统资源)
  • 确实调用accept(),但立即close() 生成的套接字。(这是相当粗鲁的......)

以上三个选项来自系统调用/操作系统级别。我不知道 PHP 如何实现(或包装)它们。

于 2012-10-31T18:21:49.727 回答