Python getpeername怎么用?获取客户端IP和端口号

在 Python 中,getpeername() 是 socket 对象的一个方法,用于获取与当前 socket 连接的对端(远程)地址信息,它通常用于 TCP 或 Unix 域 socket 连接,返回的是一个包含 IP 地址和端口号(对于 TCP/IP)或路径(对于 Unix 域 socket)的元组。

基本用法

import socket
# 创建一个 TCP socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到远程服务器
sock.connect(('example.com', 80))
# 获取对端地址
peer_address = sock.getpeername()
print(f"对端地址: {peer_address}")
# 关闭 socket
sock.close()

Python getpeername怎么用?获取客户端IP和端口号

每天学Python-通过Socket实现TCP客户端与服务器端的通讯
加载中
每天学Python-通过Socket实现TCP客户端与服务器端的通讯

输出示例

对端地址: ('93.184.216.34', 80)

注意事项

  1. 必须先建立连接getpeername() 只能在 socket 已经成功建立连接后调用,socket 未连接,调用该方法会抛出 OSError 异常。

  2. 适用于已连接的 socket:该方法仅适用于已连接的 socket(如通过 connect()accept() 建立的连接),对于监听中的 socket(如通过 bind()listen() 创建的 socket),应使用 getsockname() 获取本地地址。

  3. Python getpeername怎么用?获取客户端IP和端口号

  4. Unix 域 socket:对于 Unix 域 socket(AF_UNIX),getpeername() 返回的是对端 socket 的路径,而不是 IP 和端口。

示例:Unix 域 socket

import socket
# 创建一个 Unix 域 socket
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
# 连接到 Unix 域 socket
sock.connect('/tmp/my_socket')
# 获取对端地址
peer_address = sock.getpeername()
print(f"对端地址: {peer_address}")
# 关闭 socket
sock.close()

异常处理

在实际使用中,建议对 getpeername() 进行异常处理,以应对可能的错误情况:

Python getpeername怎么用?获取客户端IP和端口号

import socket
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
try:
    sock.connect(('example.com', 80))
    peer_address = sock.getpeername()
    print(f"对端地址: {peer_address}")
except OSError as e:
    print(f"错误: {e}")
finally:
    sock.close()
  • getpeername() 用于获取已连接 socket 的对端地址。
  • 它返回的是一个包含 IP 地址和端口号(TCP/IP)或路径(Unix 域 socket)的元组。
  • 必须在 socket 成功连接后调用,否则会导致异常。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/483514.html

(0)
Python QuerySet怎么查数据?Python QuerySet常用方法
上一篇 2026年7月11日 22:01
下一篇 2026年7月11日 22:02

相关推荐

  • 2026年服务器杀毒软件十大排名,哪个好?

    在综合评估全球企业级安全防护能力、威胁检测率、资源占用及管理效率等核心指标后,当前服务器杀毒软件领域的权威排行如下:卡巴斯基安全中心、ESET Server Security、Bitdefender GravityZone、Sophos Intercept X for Server、趋势科技 Deep Secu……

    2026年2月13日
    20530
  • 个人注册域名可以吗,个人注册域名需要哪些条件

    个人完全可以注册域名,且这是搭建个人网站、博客或展示专业形象成本最低、控制权最高的方式,只要选择正规注册商并遵守工信部实名制规定即可,很多人觉得域名是企业的专属,其实对于个人创作者、自由职业者或者技术爱好者来说,拥有一个属于自己的域名就像在互联网上买了一块“宅基地”,虽然各大平台提供了免费的空间,但那些空间随时……

    服务器运维 2026年5月28日
    4400
  • 负载均衡机制是什么?,负载均衡算法有哪些?

    负载均衡机制的核心是通过分发流量到多个服务器,提升系统并发能力和可用性,但选择哪种方案完全取决于你的业务场景、预算和技术栈,负载均衡器怎么选:场景决定方案选负载均衡器,先看场景,电商大促、视频直播、金融交易、企业内部系统,需求完全不同,不同场景对性能、功能和成本的要求差异很大,盲目跟风只会浪费钱,七层与四层,看……

    2026年8月7日
    400
  • 安卓服务器到底是哪些手机型号,哪个性价比最高?

    安卓服务器并非特指某款手机,而是指安卓手机通过系统功能或第三方软件变身为服务器,目前华为、小米、三星等品牌的部分机型内置了服务器模式或远程管理功能,安卓服务器的真实含义很多人误以为“安卓服务器”是一类专门用于服务器任务的手机品牌,实际上它指的是Android系统下的服务器软件环境,当手机开启服务器模式后,可以对……

    2026年8月20日
    1000
  • 服务器搭建管理系统怎么做,服务器管理系统搭建教程

    高效、稳定、安全的服务器环境构建,核心在于从传统的手工运维向标准化的管理系统转型,通过专业的管理系统,运维团队能够将复杂的底层硬件资源抽象为可调度的服务能力,从而实现资源的动态分配与风险的提前预警,这是保障业务连续性的关键举措,核心价值:从被动运维转向主动管理在数字化转型的浪潮中,服务器作为数据存储与计算的核心……

    2026年3月2日
    11500
  • 莞城区房价走势如何?2026年东莞莞城房价最新预测

    2026年莞城区房价整体呈现“稳中有升、分化加剧”的态势,核心地段优质资产保值性强,而老旧小区则面临流动性挑战,购房决策需从“盲目追高”转向“精准择址”,2026年莞城区房地产市场宏观格局解析站在2026年的时间节点回望,东莞楼市已经彻底告别了过去的普涨时代,莞城区作为东莞的老城核心,其市场逻辑发生了根本性变化……

    2026年7月8日
    17100
  • phpdesigner和python哪个更好,哪个更值得学?

    phpdesigner 本质上是一款 PHP 集成开发环境,但也能通过自定义语法高亮和外部工具集成实现对 Python 的基本编辑,不过缺少智能提示、调试和项目管理等专业功能,因此不适合作为 Python 主力开发环境,phpdesigner 支持 python 吗?这个问题在很多 PHP 开发者群里被反复提起……

    2026年7月21日
    600
  • python pytable是什么?,怎么用?

    PyTables是Python生态中处理大规模结构化数据的高效方案,它基于HDF5格式,能够在内存和磁盘间灵活管理数据,尤其适合需要快速查询和低内存占用的场景,PyTables是什么:从数据存储到查询PyTables是一个在Python中访问HDF5文件的库,它把HDF5的强大存储能力封装成类似数据库表的接口……

    2026年7月21日
    400
  • 零世代服务器有哪些推荐,哪个服务器最好?

    零世代服务器主要分为物理独服、云服务器和高防服务器三大类,租用前需根据联机人数、延迟需求和预算综合选型,本文从配置基准、机房线路、服务商资质三个维度拆解选购逻辑,并附可直接落地的测试命令和判断标准,零世代服务器的常见类型与适用场景零世代(Generation Zero)是一款主打合作射击的开放世界游戏,4人小队……

    2026年8月20日
    300
  • 服务器建设主机服务怎么选?高性能主机配置推荐

    高性能、高可用且具备弹性扩展能力的IT基础设施架构,是企业数字化转型的核心基石,专业的服务器建设主机服务能够从顶层设计层面解决硬件选型、环境部署、安全加固及后期运维的痛点,确保业务连续性,降低总体拥有成本(TCO),并显著提升数据资产的安全等级, 核心架构规划与硬件选型策略构建稳定的主机环境,首要任务是进行精准……

    2026年4月4日
    8200

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注