如何获取Python中Socket监听的端口?
解决方案
当然可以,你可以通过Socket对象的getsockname()方法获取它绑定的端口号。这个方法会返回一个元组(绑定的IP地址, 绑定的端口),取第二个元素就是你需要的server_port。
结合你的现有代码,修改后的逻辑可以这样写:
while True: readable, writable, exceptional = select.select(sockets, empty, empty) for s in readable: message, address = s.recvfrom(4096) # 获取当前Socket绑定的端口 bound_port = s.getsockname()[1] if bound_port == 1: # 处理端口1的消息 pass elif bound_port == 2: # 处理端口2的消息 pass
补充说明
getsockname()方法适用于已经完成绑定操作的Socket,不管你绑定的是固定端口还是系统随机分配的端口,都能准确返回实际绑定的端口号- 因为你每个Socket对应一个监听端口,所以通过这种方式就能精准区分不同端口收到的消息,不需要依赖客户端地址
内容的提问来源于stack exchange,提问作者Neskelogth
相关产品推荐
相关产品推荐

