在Ubuntu上使用Python进行网络编程,你可以使用Python的内置库socket
来实现。以下是一个简单的TCP服务器和客户端的示例。
TCP服务器
# server.py
import socket
# 创建一个socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定IP地址和端口
server_socket.bind(('0.0.0.0', 12345))
# 监听连接
server_socket.listen(5)
print("Server is listening on port 12345")
while True:
# 接受客户端连接
client_socket, client_address = server_socket.accept()
print(f"Connection from {client_address}")
# 接收数据
data = https://www.yisu.com/ask/client_socket.recv(1024)"Received: {data.decode('utf-8')}")
# 发送数据
client_socket.sendall(b"Hello, Client!")
# 关闭客户端连接
client_socket.close()
TCP客户端
# client.py
import socket
# 创建一个socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器
client_socket.connect(('127.0.0.1', 12345))
# 发送数据
client_socket.sendall(b"Hello, Server!")
# 接收数据
data = https://www.yisu.com/ask/client_socket.recv(1024)"Received: {data.decode('utf-8')}")
# 关闭客户端连接
client_socket.close()
运行示例
- 在终端中运行服务器脚本:
python3 server.py
- 在另一个终端中运行客户端脚本:
python3 client.py
你应该会看到服务器和客户端之间的通信。
UDP服务器和客户端
如果你想使用UDP协议,可以将socket.SOCK_STREAM
替换为socket.SOCK_DGRAM
,并相应地调整代码。
UDP服务器
# udp_server.py
import socket
# 创建一个socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 绑定IP地址和端口
server_socket.bind(('0.0.0.0', 12345))
print("UDP Server is listening on port 12345")
while True:
# 接收数据
data, client_address = server_socket.recvfrom(1024)
print(f"Received from {client_address}: {data.decode('utf-8')}")
# 发送数据
server_socket.sendto(b"Hello, Client!", client_address)
UDP客户端
# udp_client.py
import socket
# 创建一个socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
# 服务器地址和端口
server_address = ('127.0.0.1', 12345)
# 发送数据
client_socket.sendto(b"Hello, Server!", server_address)
# 接收数据
data, _ = client_socket.recvfrom(1024)
print(f"Received: {data.decode('utf-8')}")
# 关闭客户端连接
client_socket.close()
运行UDP示例
- 在终端中运行UDP服务器脚本:
python3 udp_server.py
- 在另一个终端中运行UDP客户端脚本:
python3 udp_client.py
你应该会看到UDP服务器和客户端之间的通信。
这些示例展示了如何在Ubuntu上使用Python进行基本的网络编程。你可以根据需要扩展这些示例,添加更多的功能和复杂性。