2013-12-11 63 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()