python socket 多线程收发
时间: 2024-08-03 20:01:15 浏览: 65
在Python中,Socket库主要用于网络通信,包括TCP/IP协议的客户端和服务器。如果想使用多线程处理收发数据,可以结合`socketserver`模块中的`ThreadingMixIn`或`BaseServer`类以及`threading`模块来实现。
下面是一个简单的例子,展示如何使用`ThreadedTCPServer`创建一个多线程的TCP服务器,每个新连接会被放入一个新的线程中处理:
```python
import socket
from threading import Thread
from socketserver import ThreadingMixIn
class ThreadedTCPRequestHandler(socketserver.BaseRequestHandler):
def handle(self):
data = self.request.recv(1024)
print(f"Received: {data.decode()}")
self.request.sendall(data.upper())
class ThreadedTCPServer(ThreadingMixIn, socketserver.TCPServer):
pass
def start_server(host, port):
server = ThreadedTCPServer((host, port), ThreadedTCPRequestHandler)
print(f"Serving on {host}:{port}...")
server.serve_forever()
if __name__ == "__main__":
host = 'localhost'
port = 12345
thread = Thread(target=start_server, args=(host, port))
thread.start()
# 等待主线程结束(这取决于服务器何时停止)
```
在这个例子中,当你发送数据到服务器的指定端口,每个新的请求会被分配给一个独立的线程进行处理,从而实现了并发接收和响应。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![-](https://csdnimg.cn/download_wenku/file_type_column_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)