商城首页欢迎来到中国正版软件门户

您的位置: 首页 > 文章列表 > 编程开发 > Python在Ubuntu上的网络编程

Python在Ubuntu上的网络编程

  发布于2026-07-04 阅读(0)

扫一扫,手机访问

在Ubuntu上进行Python网络编程,最直接的方式就是使用Python内置的socket模块。它提供了底层的网络接口,无论是搭建一个简单的TCP服务器还是编写客户端,都能轻松搞定。可以说,socket是网络编程的基石,理解了它,后续学习更高级的框架也会顺手很多。

Python在Ubuntu上的网络编程

下面通过一个具体的例子,看看在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()

运行示例

  1. 在终端中运行服务器脚本:
python3 server.py
  1. 打开另一个终端窗口,运行客户端脚本:
python3 client.py

不出意外的话,你会看到服务器端打印出客户端的连接信息,并收到来自客户端的问候;客户端也会收到服务器返回的"ACK!"。一次简单的TCP握手就此完成。

注意事项

  • 防火墙设置至关重要。记得确保系统防火墙允许应用程序使用你指定的端口,否则连接很可能被直接拦截。
  • 如果你在本地网络(比如同一台机器的两个终端)测试,用127.0.0.1没问题。但如果是跨机器通信,记得把server_host改成服务器的实际IP地址(比如局域网内的192.168.x.x),否则客户端永远找不到目标。
  • 更复杂的场景下,比如需要处理大量并发连接,或者想要异步非阻塞I/O,socket模块虽然也能实现,但代码会变得相当繁琐。这时候可以考虑asyncioTwistedTornado这类更高级的库,它们封装好了事件循环和协议处理,能省不少心力。

另外,如果涉及HTTP层面的网络编程,Python自带的http.server模块可以快速搭一个简易Web服务器,而第三方库如FlaskDjango则是构建生产级Web应用的主流选择。不过,不管上层框架多花哨,底层socket的原理始终是绕不开的基础——理解了TCP通信的细节,你对整个网络编程的理解才会真正扎实。

本文转载于:https://www.yisu.com/ask/32533700.html 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注