我想设置一个服务器应用程序和客户端应用程序,其中服务器将侦听使用本地主机和某个端口的连接 - 但是 - 例如,如果端口是2001 - 如果该端口不是可用,我想使用2002年,如果那是2003年不可用 - 等我如何在我的代码中实现?Python套接字端口使用
example = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
example.bind(("localhost",2001))
我想设置一个服务器应用程序和客户端应用程序,其中服务器将侦听使用本地主机和某个端口的连接 - 但是 - 例如,如果端口是2001 - 如果该端口不是可用,我想使用2002年,如果那是2003年不可用 - 等我如何在我的代码中实现?Python套接字端口使用
example = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
example.bind(("localhost",2001))
可绕只是循环,直到它不产生异常
port = 2001
while True:
try:
example.bind(("localhost",port))
except:
port += 1
continue
break
,而不是试图找到某种循环的可用空闲端口可以绑定到端口0
(零)并让您的操作系统绑定到合适的空闲端口。然后,您可以通过使用socket.getsockname()
反思服务器套接字对象来访问绑定的端口。我更喜欢将套接字绑定到由内核分配的随机端口号,然后查询打开的端口号。
example.bind((host,0)) #0-random, free port number
example.getsockname()
你可以在'try' -'except'内使用'example.bind(address,port)'.... –