2013-12-11 64 views
1

我想设置一个服务器应用程序和客户端应用程序,其中服务器将侦听使用本地主机和某个端口的连接 - 但是 - 例如,如果端口是2001 - 如果该端口不是可用,我想使用2002年,如果那是2003年不可用 - 等我如何在我的代码中实现?Python套接字端口使用

example = socket.socket(socket.AF_INET,socket.SOCK_STREAM) 
example.bind(("localhost",2001)) 
+2

你可以在'try' -'except'内使用'example.bind(address,port)'.... –

回答

2

可绕只是循环,直到它不产生异常

port = 2001 
while True: 
    try: 
     example.bind(("localhost",port)) 
    except: 
     port += 1 
     continue 
    break 
0

,而不是试图找到某种循环的可用空闲端口可以绑定到端口0)并让您的操作系统绑定到合适的空闲端口。然后,您可以通过使用socket.getsockname()

0

反思服务器套接字对象来访问绑定的端口。我更喜欢将套接字绑定到由内核分配的随机端口号,然后查询打开的端口号。

example.bind((host,0)) #0-random, free port number 
example.getsockname()