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://idctop.com/article/483514.html

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

相关推荐

  • 服务器建立邮件服务器难吗?企业自建邮件服务器完整教程

    在服务器上自行搭建邮件服务器,是企业实现数据自主管控、降低长期运营成本的最佳途径,但成功的关键在于反向解析配置与安全策略的严格执行,搭建过程并非简单的软件安装,而是一个涉及DNS解析、系统配置、安全加固的系统性工程,只有每一个环节都精准到位,才能确保邮件的高送达率与服务器的稳定性, 核心准备:DNS解析与服务器……

    2026年3月29日
    9100
  • 个人生大数据分析软件哪个好用?免费好用的个人数据分析工具推荐

    个人生大数据分析软件并非魔法水晶球,而是通过整合多维度行为数据,利用算法模型辅助你进行职业决策、财务规划及健康管理的高效工具,其核心价值在于将模糊的直觉转化为可执行的量化建议,什么是个人生大数据分析软件及其底层逻辑很多人对这类软件存在误解,认为它是某种能预测未来的神秘程序,它更像是一个高度智能化的私人顾问,它通……

    2026年5月27日
    3200
  • 服务器建站主机区别是什么?建站选服务器还是主机好

    在互联网基础设施的选型中,服务器与建站主机(虚拟主机)的核心区别在于资源独占性与管理权限的维度不同,服务器相当于一栋独立的“豪宅”,用户拥有整栋楼的支配权;而建站主机则是“公寓”中的一个房间,虽然共享整栋楼的设施,但成本更低且无需维护基础设施,对于追求高性能与数据安全的企业,服务器是首选;对于初创期流量较小的个……

    2026年3月28日
    9800
  • 服务器推出全新s6实例怎么样?s6实例性能配置详解

    全新S6实例的发布标志着云计算算力进入高性价比与高性能并重的全新阶段,其核心价值在于通过底层架构的深度重构,实现了单核性能的跨越式提升与成本结构的显著优化,直接解决了企业用户在业务高峰期面临的算力瓶颈与预算约束矛盾,这一代实例并非简单的参数堆砌,而是基于真实业务场景痛点提供的成熟解决方案,特别适合中小型企业及高……

    2026年3月11日
    12700
  • GBK转UTF8linux怎么操作?linux编码转换乱码解决方法

    在Linux环境下将GBK编码文件转换为UTF-8,最稳妥且高效的方法是使用iconv命令配合find遍历目录,或借助recode工具处理复杂字符集,这能彻底解决网页乱码和数据库导入失败的问题,编码转换看似简单,实则暗藏玄机,很多开发者在从Windows迁移项目到Linux服务器,或者处理国内老旧系统导出的数据……

    2026年6月25日
    2910
  • 服务器机型主要分哪几种,服务器机型怎么选

    选择合适的服务器机型是构建高可用、高性能IT基础设施的基石,直接关系到企业的业务稳定性、运营成本及未来扩展能力,核心结论在于:不存在绝对完美的服务器,只有最匹配业务场景的机型, 企业在进行服务器选型时,必须摒弃“唯参数论”的误区,转而基于业务负载特性(计算密集型、I/O密集型、存储密集型或AI训练型),在机架式……

    2026年2月17日
    23130
  • 服务器快照怎么做?服务器快照备份操作步骤详解

    服务器快照是保障数据安全与业务连续性的核心手段,其本质在于为云端数据创建一个“时间冻结点”,在系统崩溃或数据丢失时实现分钟级回滚,相较于传统的文件级备份,服务器快照具备效率高、恢复快、占用资源少的绝对优势,是运维管理中不可或缺的“后悔药”,掌握规范的服务器快照教程,能够有效规避人为误操作、病毒攻击及系统故障带来……

    2026年3月24日
    9800
  • 如何选择合适的服务器配置?服务器配置要求与方案推荐

    服务器的配置规格服务器的配置规格是其性能、稳定性与适用性的基石,核心在于根据业务负载精准匹配CPU处理能力、内存容量与速度、存储系统的类型/容量/IO性能、网络带宽与连接性,以及冗余电源、散热等可靠性组件, 一套均衡且前瞻性的配置是支撑关键应用高效、安全运行的根本保障,核心处理单元:CPU架构与核心/线程数……

    2026年2月10日
    11900
  • 服务器提示找不到操作系统怎么办?电脑开机显示找不到OS怎么解决

    服务器提示找不到操作系统,核心症结往往在于系统引导记录丢失、硬盘硬件故障或BIOS启动项配置错误,通过系统化的排查流程,90%以上的此类故障可以在不重装系统的前提下得到修复,保障业务数据的完整性,故障定位与核心诊断逻辑面对屏幕上冰冷的“Operating System Not Found”或“No operat……

    2026年3月13日
    11000
  • 服务器小时计费怎么算?服务器按小时计费费用计算方法

    高弹性、低成本、快迭代的云资源最优解在云原生与DevOps快速发展的今天,服务器小时计费已成为中小企业、初创团队及敏捷开发项目的主流计费模式,相比传统包年包月或固定带宽模式,它以“按需使用、按小时结算”为核心逻辑,显著降低IT基础设施的前期投入与资源闲置成本,同时支持秒级弹性伸缩,满足业务突发流量与灰度发布的严……

    2026年4月14日
    6100

发表回复

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