编程实现,客户端输入两个数,服务端计算结果,并返回,要求服务端用多线程实现
时间: 2023-08-04 21:35:21 浏览: 36
以下是一个用 Python 实现的多线程服务端,可以接收客户端输入的两个数,并计算结果返回给客户端:
```python
import socket
import threading
def handle_client(conn):
# 接收客户端输入的两个数
data = conn.recv(1024)
nums = data.decode().split()
num1 = int(nums[0])
num2 = int(nums[1])
# 计算结果
result = num1 + num2
# 返回结果给客户端
conn.send(str(result).encode())
# 关闭连接
conn.close()
def start_server():
# 创建 TCP 套接字
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定 IP 地址和端口号
server_socket.bind(('localhost', 8888))
# 开始监听
server_socket.listen(5)
while True:
# 等待客户端连接
conn, addr = server_socket.accept()
# 创建新线程处理该客户端
t = threading.Thread(target=handle_client, args=(conn,))
t.start()
if __name__ == '__main__':
start_server()
```
客户端可以通过以下代码与服务端进行交互:
```python
import socket
# 创建 TCP 套接字
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接服务端
client_socket.connect(('localhost', 8888))
# 输入两个数
num1 = input('请输入第一个数:')
num2 = input('请输入第二个数:')
# 发送两个数到服务端
client_socket.send(f'{num1} {num2}'.encode())
# 接收服务端返回的结果
result = client_socket.recv(1024).decode()
# 输出结果
print(f'计算结果为:{result}')
# 关闭连接
client_socket.close()
```
注意:上述代码没有对客户端输入的数进行校验,实际使用中应该添加相应的校验逻辑。