如何等待其他进程开始侦听本地端口?

时间:2010-07-01 19:16:02

标签: events testing sockets networking

我有一个测试驱动程序,它启动一个单独的测试服务器进程。测试服务器进程侦听本地端口,在准备就绪后,测试驱动程序运行一个访问测试服务器的测试。

目前,测试驱动程序反复尝试连接到本地端口(循环一些,睡一些,再试一次)。它不是最佳解决方案,显然不可靠。

是否有可能等待某个事件说“有人在本地端口上侦听”?尝试连接到早期会导致“端口关闭”错误。

我想在Windows,Linux和Mac OS X上实施该解决方案。如果您对这些系统中的任何一个都有一些提示,那么欢迎(在每种情况下它可能都是特定于系统的)。

2 个答案:

答案 0 :(得分:1)

那么,如果你启动服务器进程,你可以拦截服务器的stdout吗?

当套接字就绪时,服务器输出“服务器已启动”。驱动程序应该等到服务器将此字符串发送到stdout,然后尝试连接到服务器端口。

答案 1 :(得分:1)

在Windows上我使用命名事件来做这种事情。

测试工具可以创建事件并将事件的名称传递给它启动的服务器;然后在继续测试之前等待事件发出信号。然后服务器连接到事件,初始化自己,一旦准备接受连接,它就会发出事件信号。