Python套接字端口使用

时间:2013-12-11 12:15:38

标签: python python-3.x

我正在尝试设置服务器应用程序和客户端应用程序,其中服务器将使用localhost和某个端口侦听连接 - 但是 - 例如,如果端口是2001 - 如果该端口不可用,我会喜欢使用2002,如果2003年没有它 - 等等我如何在我的代码中实现它?

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

3 个答案:

答案 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()