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

相关推荐

  • python mytool怎么用?python常用工具库推荐

    Python MyTool 并非单一软件,而是一套基于 Python 生态的自动化脚本与工具集解决方案,旨在通过代码封装降低重复劳动门槛,其核心价值在于将复杂业务逻辑转化为可复用的轻量级模块,在数字化转型的深水区,许多开发者和技术人员面临着一个共同痛点:手里有现成的 Python 脚本,但每次换台机器、换个环境……

    2026年7月7日
    20000
  • 服务器端口一共有多少个,服务器常用端口有哪些

    从网络通信的底层逻辑来看,一台服务器理论上拥有 65535 个可用端口,这个数字并非随意设定,而是由TCP/IP协议中传输层协议头部的位宽决定的,具体而言,TCP和UDP协议的端口字段均为16位,2的16次方即为65536,由于端口号从0开始计数,因此可用范围是0到65535,服务器有几个端口 的具体应用,实际……

    2026年2月23日
    13400
  • 服务器监控主要监控哪些指标?服务器性能与运行状态详解

    服务器监控的核心目的在于全面洞察IT基础设施的运行状态、性能瓶颈、资源利用率和潜在风险,确保业务应用稳定、高效、安全地运行,简而言之,它能监控到从底层硬件到上层应用、再到网络连接和安全态势的一切关键要素,具体而言,一个成熟的服务器监控体系能够深入洞察以下核心层面:系统资源层:硬件的“脉搏”与“呼吸”这是监控的基……

    2026年2月7日
    14220
  • GPU双11有活动吗,显卡双十一优惠力度大吗

    2026年双11期间,各大电商平台及线下渠道均有明确的GPU促销活动,核心策略集中在清仓旧架构、补贴新一代入门卡以及捆绑整机销售,建议重点关注官方旗舰店的预售期与现货爆发期的价格差异,以获取最优性价比,2026年显卡市场促销节奏与核心逻辑预售期与爆发期的价格博弈在2026年的双11大促中,显卡的价格波动呈现出明……

    2026年6月24日
    1500
  • 人串口服务器有哪些型号?,哪个型号值得买?

    串口服务器型号按接口类型和安装形态可分为单串口、多串口、桌面式、导轨式和嵌入式等几大类,人串口服务器”多为“单串口服务器”的常见笔误,选购时重点看接口标准、波特率和工作温度这三项核心参数,接口类型决定型号归属串口服务器从接口维度划分,直接对应不同场景下的物理连接需求,多数设备同时支持TCP/UDP协议,但物理层……

    2026年8月22日
    200
  • 个人怎么免费注册域名?免费域名注册有哪些平台

    个人无法真正“免费”获得具有全球通用顶级域名(如.com/.cn)的所有权,但可通过注册商赠送、免费子域名或特定公益项目实现零成本建站,其中注册商赠送是最主流且实用的方案,在2026年的互联网环境下,域名早已从单纯的“网络地址”演变为个人品牌的核心资产,许多初学者常陷入误区,认为域名必须高价购买,或者被某些“永……

    2026年6月5日
    3300
  • 个人免费的云主机哪里找?免费云主机租用推荐

    个人免费的云主机确实存在,但仅限入门级试用或特定厂商的“永久免费”微配置实例,适合学习Linux基础、搭建个人博客或测试轻量级应用,无法承载高并发生产环境,在云计算普及的今天,许多初学者和开发者渴望拥有自己的服务器,却往往被高昂的费用劝退,主流云厂商为了培养用户习惯,都推出了力度不小的免费或低成本方案,这些资源……

    2026年6月14日
    2600
  • 服务器更换方案怎么做,企业服务器迁移流程详解

    服务器更换不仅仅是硬件升级或云厂商迁移,而是一项涉及业务连续性、数据安全和未来扩展性的系统工程,核心结论在于:成功的迁移必须建立在“零停机”或“最小化停机”策略之上,通过严格的预演、灰度发布及完善的回滚机制来保障业务平稳过渡, 制定一份科学的服务器更换方案是确保这一过程万无一失的前提,它要求技术人员在执行前对现……

    2026年2月24日
    13800
  • 服务器地址和IP地址有什么区别,怎么查?

    服务器地址通常指的就是IP地址,但在实际网络配置中,它也可能包含域名或端口号,核心都是用来唯一标识服务器在网络中的位置,服务器地址和IP地址是一回事吗?——解析区别与联系很多人在配置网络时都会遇到这两个词,服务器地址和IP地址在绝大多数场景下指向同一个东西,服务器地址是一个更宽泛的概念,行业共识认为,IP地址是……

    2026年7月28日
    400
  • 个人如何申请注册域名?域名注册流程及费用详解

    个人申请注册域名最稳妥的路径是选择工信部备案的国内注册商以获取极速解析体验,或选择海外注册商以追求隐私保护,关键在于确认域名后缀的合规性及注册商的售后响应速度,在数字化浪潮中,域名早已不再仅仅是一串字符,它是你在互联网世界的门牌号,更是品牌资产的第一块基石,对于个人开发者、自由职业者或小型创业者而言,如何以最低……

    2026年5月27日
    5800

发表回复

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