擅长:python、mysql、java
<p>一个非常简单的echo TCP(<code>SOCK_STREAM</code>)服务器,演示如何实现多处理服务器。利用<code>threadPoolExecutor</code>来
异步接受连接。在</p>
<h2>服务器:</h2>
<pre><code>import socket
import concurrent.futures
def server_instance(addr):
HOST = addr[0]
PORT = addr[1]
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen()
conn, addr = s.accept()
with conn:
print(f"Linked with: {addr}")
while True:
data = conn.recv(1024)
if not data:
break
conn.sendall(data)
return f'DONE'
addresses = [
('127.0.0.1', 65432),
('127.0.0.1', 65431),
('127.0.0.1', 65433),
('127.0.0.1', 65435),
('127.0.0.1', 65434),
]
with concurrent.futures.ThreadPoolExecutor() as executor:
for address, status in zip(addresses, executor.map(server_instance, addresses)):
print(f"{address}: {status}")
</code></pre>
<p>向服务器发送数据的客户端。在</p>
<h2>客户:</h2>
^{pr2}$
<p>f型琴弦需要python3.6及更高版本</p>
<p>concurrent futures需要python3.2及更高版本</p>