在Ubuntu中,Python进行网络编程通常是通过使用Python的内置库socket来实现的。socket库提供了底层的网络接口,允许你创建客户端和服务器应用程序。
以下是一个简单的例子,展示了如何在Ubuntu中使用Python进行基本的网络编程:
# 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("ACK!".encode())
# 关闭客户端连接
client_socket.close()
# 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))
# 发送数据
client_socket.sendall("Hello, Server!".encode())
# 接收数据
data = client_socket.recv(1024)
print(f"Received from server: {data.decode()}")
# 关闭连接
client_socket.close()
在Ubuntu终端中,运行服务器脚本:
python3 server.py
在另一个终端中,运行客户端脚本:
python3 client.py
socket.socket(socket.AF_INET, socket.SOCK_STREAM):创建一个TCP/IP socket。bind((server_host, server_port)):将socket绑定到指定的地址和端口。listen(5):开始监听传入连接,参数5表示允许的最大连接数。accept():接受一个传入连接,返回一个新的socket对象和客户端地址。recv(1024):接收数据,参数1024表示最大接收字节数。sendall(b"ACK!"):发送数据,b"ACK!"是要发送的字节串。connect((server_host, server_port)):连接到服务器。这个例子展示了基本的TCP网络编程。你可以根据需要扩展这个例子,添加更多的功能,比如处理多个客户端、使用线程或异步IO等。