用TCP协议实现:服务器使用多线程为客户端提供服务,客户端发送任意一个正整数,服务器端返回此数因子的个数。
时间: 2023-06-03 08:02:41 浏览: 62
好的,这个问题可以回答。以下是实现代码:
服务端代码:
```
import socket
import threading
def handle_client(conn, addr):
print("Connected by", addr)
while True:
data = conn.recv(1024)
if not data:
break
num = int(data.decode())
factors = [i for i in range(1, num+1) if num % i == 0]
conn.send(str(len(factors)).encode())
conn.close()
def main():
HOST = 'localhost'
PORT = 9999
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.bind((HOST, PORT))
s.listen(5)
print('Listening on {}:{}'.format(HOST, PORT))
while True:
conn, addr = s.accept()
t = threading.Thread(target=handle_client, args=(conn, addr))
t.start()
if __name__ == '__main__':
main()
```
客户端代码:
```
import socket
HOST = 'localhost'
PORT = 9999
def main():
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
s.connect((HOST, PORT))
while True:
num_str = input('Input a positive integer:')
try:
num = int(num_str)
s.send(num_str.encode())
data = s.recv(1024)
count = int(data.decode())
print('The number of factors of {} is: {}'.format(num, count))
except ValueError:
print('Invalid input, please input a positive integer.')
if __name__ == '__main__':
main()
```