使用Python通过socket实现多线程服务器
发布时间:2023-12-26 00:49:14
Python通过socket模块可以实现多线程服务器,以下是一个简单的使用例子:
import socket
import threading
def handle_client(client_socket):
# 接收客户端发来的数据
request = client_socket.recv(1024)
print('Received:', request)
# 向客户端发送响应
response = 'Hello from server'
client_socket.send(response.encode('utf-8'))
# 关闭客户端连接
client_socket.close()
def main():
# 创建服务器的socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定服务器的IP和端口号
server_address = ('', 12345)
server_socket.bind(server_address)
# 监听连接请求
server_socket.listen(5)
print('Server is ready and listening...')
while True:
# 接受客户端的连接请求
client_socket, client_address = server_socket.accept()
# 创建线程处理客户端请求
client_thread = threading.Thread(target=handle_client, args=(client_socket,))
client_thread.start()
if __name__ == '__main__':
main()
以上代码实现了一个简单的多线程服务器。在main函数中,首先创建了一个服务器的socket对象,然后通过bind方法绑定服务器的IP和端口号。接下来,通过listen方法监听连接请求。然后进入一个循环,不断接受客户端的连接请求。
当有客户端连接时,创建一个新的线程用于处理该客户端的请求。handle_client函数接收客户端发送的数据,并向客户端发送响应。最后关闭客户端连接。
通过多线程的方式处理客户端请求,可以高效地处理多个客户端的并发请求。每个客户端连接都会在不同的线程中进行处理,互不干扰。
