python socket 多线程
时间: 2023-10-07 13:07:58 浏览: 90
socket多线程
在 Python 中,你可以使用 socket 模块来创建网络应用程序。如果你想在网络应用程序中使用多线程,可以结合使用 socket 和 threading 模块。
下面是一个简单的示例代码,展示了如何使用多线程来处理客户端的连接请求:
```python
import socket
import threading
def handle_client(client_socket):
# 处理客户端的连接请求
request = client_socket.recv(1024)
print(f"Received request: {request.decode()}")
# 响应客户端请求
response = "Hello from the server!"
client_socket.send(response.encode())
# 关闭客户端连接
client_socket.close()
def main():
# 创建 socket 对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定 IP 地址和端口号
server_address = ("localhost", 8888)
server_socket.bind(server_address)
# 开始监听连接
server_socket.listen(5)
print("Server started, waiting for connections...")
while True:
# 接受客户端的连接请求
client_socket, client_address = server_socket.accept()
print(f"Accepted connection from {client_address}")
# 创建线程来处理客户端连接
client_thread = threading.Thread(target=handle_client, args=(client_socket,))
client_thread.start()
if __name__ == "__main__":
main()
```
在上面的示例中,我们创建了一个 `handle_client` 函数,用于处理客户端的连接请求。在 `main` 函数中,我们使用 `socket` 模块创建了一个服务器端的 socket 对象,并绑定了 IP 地址和端口号。然后,我们使用 `listen` 方法开始监听连接。
在主循环中,我们使用 `accept` 方法接受客户端的连接请求,并创建一个新的线程来处理该连接。每个线程都会调用 `handle_client` 函数来处理客户端请求。处理完成后,线程会关闭客户端连接。
这样,服务器就可以同时处理多个客户端的连接请求了。注意,这只是一个简单的示例代码,实际应用中可能需要更多的处理逻辑和安全措施。
阅读全文