Socket编程是一种在计算机网络中进行通信的方式,它允许两台计算机之间通过网络进行数据交换。在Socket编程中,一个应用程序可以充当客户端、服务器端,或同时兼具两者的角色,通过套接字(Socket)进行通信。
在Python中,可以使用内置的socket模块来实现Socket编程。以下是一个简单的例子,演示了如何创建一个简单的服务器和客户端,它们之间通过Socket进行通信。
服务器端代码:
import socket
# 创建一个TCP/IP套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定套接字到指定地址和端口
server_address = ('localhost', 12345)
server_socket.bind(server_address)
# 开始监听连接
server_socket.listen(1)
print('等待连接...')
while True:
# 等待连接
client_socket, client_address = server_socket.accept()
print(f'接收来自 {client_address} 的连接')
try:
# 从客户端接收数据
data = client_socket.recv(1024)
print(f'接收到的数据: {data.decode()}')
# 发送响应数据
response = 'Hello, client!'
client_socket.sendall(response.encode())
finally:
# 关闭连接
client_socket.close()
客户端代码:
import socket
# 创建一个TCP/IP套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务器
server_address = ('localhost', 12345)
client_socket.connect(server_address)
try:
# 发送数据到服务器
message = 'Hello, server!'
client_socket.sendall(message.encode())
# 接收服务器的响应
data = client_socket.recv(1024)
print(f'接收到的响应: {data.decode()}')
finally:
# 关闭连接
client_socket.close()
在上述例子中,服务器通过socket()创建了一个套接字,然后使用bind()将套接字绑定到特定的地址和端口。服务器使用listen()开始监听连接,并通过accept()等待客户端的连接。一旦连接建立,服务器从客户端接收数据,然后发送响应,并最后关闭连接。
客户端也通过socket()创建了一个套接字,然后使用connect()连接到服务器。客户端发送数据到服务器,然后接收服务器的响应,并最后关闭连接。
这只是一个简单的示例,实际的应用中可能涉及更复杂的数据处理和多个并发连接的处理。在实际应用中,还可以考虑使用select、asyncio等工具来处理并发连接。