检查套接字是否在python中使用

我正在运行一个telnet到terminal server的脚本。 有时脚本会在一个实例正在运行时启动,这会导致已经运行的脚本失败

EOFError: telnet connection closed

在尝试打开与telnetlib的连接之前,是否有一种快速简便的pythonic方法来检查客户端计算机上是否已经使用了所需的套接字

解:

我想避免进行subprocess调用,但由于我不控制客户端计算机上的软件,其他程序可能使用相同的套接字,下面的文件lockingbuild议(一个好主意)不适合我。 我结束了使用SSutrave的build议。 这是我在Windows 7中使用netstat的工作代码:

 # make sure the socket is not already in use try: netstat = subprocess.Popen(['netstat','-nao'],stdout=subprocess.PIPE) except: raise ValueError("couldn't launch netstat to check sockets. exiting") ports = netstat.communicate()[0] if (ip + ':' + port) in ports: print 'socket ' + ip + ':' + port + ' in use on this computer already. exiting' return 

您可以通过运行以下linux命令netstat | grep 'port number' | wc -l来检查打开的端口 netstat | grep 'port number' | wc -l netstat | grep 'port number' | wc -l通过在python中导入subprocess库。

在尝试连接服务器之前,没有一种标准的方法可以知道服务器是否有其他打开的连接。 你必须要求它连接到服务器上的另一个服务器来检查它,或者询问其他客户端,如果你知道所有的服务器。

也就是说,远程登录服务器应该能够一次处理多个连接,所以如果有更多的客户端连接,应该没有关系。