You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 20:21:58