我正在尝试设置服务器应用程序和客户端应用程序,其中服务器将使用localhost和某个端口侦听连接 - 但是 - 例如,如果端口是2001 - 如果该端口不可用,我会喜欢使用2002,如果2003年没有它 - 等等我如何在我的代码中实现它?
example = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
example.bind(("localhost",2001))
答案 0 :(得分:2)
可能只是循环,直到它不会产生异常
port = 2001
while True:
try:
example.bind(("localhost",port))
except:
port += 1
continue
break
答案 1 :(得分:0)
不是尝试在某种循环中找到可用的空闲端口,而是可以绑定到端口0
(零)并让您的操作系统绑定到合适的空闲端口。然后,您可以使用socket.getsockname()
答案 2 :(得分:0)
我更喜欢将套接字绑定到内核分配的随机端口号,然后查询打开的端口号。
example.bind((host,0)) #0-random, free port number
example.getsockname()