Python在Ubuntu上的网络编程
作者:WeekendFlower
时间:2026-07-04
浏览:0
在Ubuntu上利用Python内置socket模块可搭建TCP服务器与客户端,实现创建套接字、绑定地址、监听、接受连接及收发数据等核心操作。需注意防火墙放行端口,跨机通信须使用实际IP地址。掌握socket是理解更高级网络框架的基础。
在Ubuntu上进行Python网络编程,最直接的方式就是使用Python内置的socket模块。它提供了底层的网络接口,无论是搭建一个简单的TCP服务器还是编写客户端,都能轻松搞定。可以说,socket是网络编程的基石,理解了它,后续学习更高级的框架也会顺手很多。

下面通过一个具体的例子,看看在Ubuntu上如何用socket库实现一个TCP服务器和客户端之间的通信。代码不长,但涵盖了网络编程最核心的几个环节:创建套接字、绑定地址、监听、接受连接、收发数据。
TCP服务器
# server.py
import socket
# 创建一个socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定地址和端口
server_host = '127.0.0.1'
server_port = 12345
server_socket.bind((server_host, server_port))
# 监听连接
server_socket.listen(5)
print(f"[*] Listening on {server_host}:{server_port}")
while True:
# 接受客户端连接
client_socket, client_address = server_socket.accept()
print(f"[+] Connection from {client_address}")
# 接收数据
data = client_socket.recv(1024)
print(f"[+] Received: {data.decode()}")
# 发送数据
client_socket.sendall(b"ACK!")
# 关闭客户端连接
client_socket.close()
TCP客户端
# client.py
import socket
# 创建一个socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器
server_host = '127.0.0.1'
server_port = 12345
client_socket.connect((server_host, server_port))
# 发送数据
message = "Hello, Server!"
client_socket.sendall(message.encode())
# 接收响应
response = client_socket.recv(1024)
print(f"[+] Received: {response.decode()}")
# 关闭连接
client_socket.close()
运行示例
- 在终端中运行服务器脚本:
python3 server.py
- 打开另一个终端窗口,运行客户端脚本:
python3 client.py
不出意外的话,你会看到服务器端打印出客户端的连接信息,并收到来自客户端的问候;客户端也会收到服务器返回的"ACK!"。一次简单的TCP握手就此完成。
注意事项
- 防火墙设置至关重要。记得确保系统防火墙允许应用程序使用你指定的端口,否则连接很可能被直接拦截。
- 如果你在本地网络(比如同一台机器的两个终端)测试,用
127.0.0.1没问题。但如果是跨机器通信,记得把server_host改成服务器的实际IP地址(比如局域网内的192.168.x.x),否则客户端永远找不到目标。 - 更复杂的场景下,比如需要处理大量并发连接,或者想要异步非阻塞I/O,
socket模块虽然也能实现,但代码会变得相当繁琐。这时候可以考虑asyncio、Twisted或Tornado这类更高级的库,它们封装好了事件循环和协议处理,能省不少心力。
另外,如果涉及HTTP层面的网络编程,Python自带的http.server模块可以快速搭一个简易Web服务器,而第三方库如Flask和Django则是构建生产级Web应用的主流选择。不过,不管上层框架多花哨,底层socket的原理始终是绕不开的基础——理解了TCP通信的细节,你对整个网络编程的理解才会真正扎实。
作者最新文章
赤友清理大师
2026-09-16 17:43
南邮光擎智算团队:GaN基Micro-LED光计算芯片从理论到流片的突破
2026-09-08 18:35
多张照片怎么合成PDF文件?三种图片转PDF工具怎么选?
2026-09-03 17:04
Excel转PDF防乱版指南:在线与本地双方案及排版检查
2026-09-03 10:04
多个PDF怎么合并成一个?合并后顺序怎么检查?
2026-09-02 19:54
上一篇:
Python在Ubuntu上的并发编程
热门文章
更多
精品专题
更多
Mac软件
更多
WINDOWS
更多


































