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

Python Socket编程:如何获取并回传客户端端口号?

获取客户端端口并回传的Python实现方法

嘿,这个问题其实挺常见的,我来给你拆解下两种最常用的网络通信场景——TCP和UDP的实现方案,都是用Python标准库socket就能轻松搞定的:

1. TCP 场景实现

TCP是面向连接的协议,服务端在和客户端建立连接后,可以直接从连接对象中获取客户端的地址(包含IP和端口),然后把端口号回传给客户端。

服务端代码

import socket

# 创建TCP socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口
server_socket.bind(('0.0.0.0', 12345))
# 监听连接
server_socket.listen(5)

print("服务端已启动,等待客户端连接...")
while True:
    # 接受客户端连接,conn是连接对象,addr是客户端地址元组(IP, 端口)
    conn, addr = server_socket.accept()
    client_ip, client_port = addr
    print(f"客户端 {client_ip}:{client_port} 已连接")
    
    # 将客户端端口号转为字符串并发送
    conn.send(f"你的客户端端口是: {client_port}".encode('utf-8'))
    
    # 关闭连接
    conn.close()

客户端代码

import socket

# 创建TCP socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务端
client_socket.connect(('127.0.0.1', 12345))

# 接收服务端回传的信息
response = client_socket.recv(1024).decode('utf-8')
print(response)

# 关闭连接
client_socket.close()

2. UDP 场景实现

UDP是无连接的协议,服务端每次接收数据时,都会同时获取到客户端的地址信息,直接提取端口号回传即可。

服务端代码

import socket

# 创建UDP socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定地址和端口
server_socket.bind(('0.0.0.0', 12345))

print("UDP服务端已启动,等待客户端数据...")
while True:
    # 接收客户端数据和地址
    data, addr = server_socket.recvfrom(1024)
    client_ip, client_port = addr
    print(f"收到来自 {client_ip}:{client_port} 的数据: {data.decode('utf-8')}")
    
    # 回传客户端端口号
    server_socket.sendto(f"你的客户端端口是: {client_port}".encode('utf-8'), addr)

客户端代码

import socket

# 创建UDP socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

# 发送数据到服务端
client_socket.sendto("请求获取我的端口号".encode('utf-8'), ('127.0.0.1', 12345))

# 接收服务端回传的信息
response, _ = client_socket.recvfrom(1024)
print(response.decode('utf-8'))

# 关闭socket
client_socket.close()

一些额外说明

  • 如果你在客户端代码里手动绑定了固定端口(比如client_socket.bind(('0.0.0.0', 6789))),那服务端获取到的就是你指定的这个端口;如果没有绑定,系统会自动分配一个随机端口。
  • 代码里用了utf-8编码来处理字符串和字节的转换,避免乱码问题,实际使用时可以根据需求调整。

内容的提问来源于stack exchange,提问作者user9181771

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:57:12