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/python-getpeername%e6%80%8e%e4%b9%88%e7%94%a8%ef%bc%9f%e8%8e%b7%e5%8f%96%e5%ae%a2%e6%88%b7%e7%ab%afip%e5%92%8c%e7%ab%af%e5%8f%a3%e5%8f%b7/

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

相关推荐

  • 非客户端服务器与客户端服务器有什么区别,如何选择

    非客户端服务器架构,本质上是一种去中心化的对等网络模式,每个节点同时扮演客户端和服务器的角色,彻底打破了传统客户端-服务器模式的中心化依赖,非客户端服务器是什么?非客户端服务器,也叫对等网络(P2P),是一种没有中心服务器的网络架构,在这种模式中,每个参与者既是资源提供者也是资源消费者,你不需要专门搭建一台服务……

    服务器运维 2026年8月9日
    700
  • 个人云服务器安全如何保障?云服务器安全防护有哪些技巧

    个人云服务器安全的核心在于构建“最小权限+自动备份+持续监控”的防御闭环,而非单纯依赖防火墙,主动隔离风险比事后补救有效得多,很多人以为买了服务器就万事大吉,其实那只是把数字资产搬到了云端,真正的风险才刚刚开始,对于个人开发者或小型团队来说,云服务器不仅是计算资源,更是你的数字家园,一旦失守,数据泄露、网站被挂……

    服务器运维 2026年5月27日
    5200
  • 服务器宽带超出怎么办?服务器宽带超出原因及解决方法

    当服务器带宽超出时,网站响应延迟、服务中断甚至宕机风险陡增——这是网站可用性最直接、最致命的瓶颈之一,带宽不足并非单纯“网速慢”的表象,而是系统资源调度失衡的综合体现,本文将从成因识别、影响评估、诊断方法、解决方案四个维度,提供一套可落地、可复用的工程化应对策略,带宽超出的三大典型成因流量突增型:突发营销活动……

    服务器运维 2026年4月16日
    5700
  • 服务器转发两个客户端的源代码如何实现,原理是什么?

    服务器转发两个客户端通信的关键在于建立一个中央服务节点,同时维护两条连接,实现双向数据透明传输,以下提供Python和Java的完整可运行源代码,可直接用于即时通讯、联机游戏等场景,服务器转发两个客户端源代码:核心原理与架构为什么需要服务器中转当两个客户端无法直接通信时,比如位于不同子网、受防火墙限制或NAT设……

    服务器运维 2026年8月9日
    1200
  • 英雄联盟到底哪些大区是四川区的服务器,怎么查?

    英雄联盟并没有官方划分的“四川区”服务器,但四川玩家普遍集中在电信区中的皮尔特沃夫、祖安、诺克萨斯和班德尔城等大区,其中皮尔特沃夫和祖安因地理位置近、延迟低,被称为四川玩家的默认选择,而班德尔城则长期被玩家称为“四川一区”,为什么lol没有官方四川区服务器英雄联盟国服开服时,腾讯按运营商划分了电信区和网通区,并……

    2026年7月24日
    2100
  • 服务器缺点有哪些?如何避免常见故障 | 服务器问题解决方案

    服务器有缺点服务器是实现计算、存储和网络服务的核心硬件设备,但它并非完美无缺,其固有的缺点,如硬件故障风险、安全漏洞、运维复杂度高、成本压力大以及灵活性受限等,是企业在构建和运营IT基础设施时必须正视和解决的现实挑战,深刻理解这些缺点并采取有效对策,是保障业务连续性、数据安全与优化投资回报的关键,物理硬件的脆弱……

    2026年2月13日
    13000
  • 个人服务器照片怎么存?个人服务器照片存储方案

    个人服务器照片存储的核心优势在于数据主权完全掌握在自己手中,通过自建NAS或Linux服务器,结合异地备份策略,能彻底解决公有云隐私泄露风险与高昂续费成本问题,是追求极致隐私与长期低成本存储的最佳技术解决方案,在数字化时代,手机相册的容量焦虑已成为普遍痛点,大多数人习惯将照片上传至百度网盘或iCloud,但随之……

    2026年5月29日
    5200
  • 服务器重装linux系统怎么做?,步骤是什么?

    服务器重装Linux系统,只要提前备份好数据和RAID配置,通过U盘或网络启动安装,整个过程可以在1小时内完成,成本主要取决于是否需要远程协助,服务器重装Linux系统前的准备工作重装系统前,先把现有环境摸清楚,避免装完发现缺驱动或丢数据,确认硬件与RAID状态- 登录服务器带外管理(如iDRAC、IPMI、B……

    2026年7月24日
    1200
  • 服务器推送最新消息是什么?服务器推送消息怎么实现

    服务器推送技术已成为现代互联网应用实现即时通讯的核心手段,其本质在于变“客户端主动拉取”为“服务端主动推送”,极大地降低了网络延迟与资源消耗,核心结论是:构建高效、稳定的服务器推送机制,必须精准匹配业务场景,在WebSocket长连接、SSE单向流、以及轻量级轮询之间做出最优权衡,并建立完善的断线重连与心跳检测……

    2026年3月7日
    12000
  • 常见的app与服务器通信协议有哪些,是什么?

    App与服务器通信协议的核心答案很直接:现阶段九成以上的App走的是HTTP/HTTPS,实时性要求高的场景会叠加WebSocket,物联网设备则多采用MQTT协议,而追求极致性能的内部系统通常选择gRPC,这五种协议基本覆盖了市面上所有主流App的通信需求,剩下的TCP/UDP属于传输层底座,私有协议则是在这……

    服务器运维 2026年8月10日
    1600

发表回复

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