python编写TCP程序,由客户端发送正整数n,服务端计算n!并返回。
时间: 2024-05-16 13:14:49 浏览: 42
以下是一个简单的Python TCP客户端/服务器程序,实现了客户端发送正整数n,服务器计算n!并返回的功能。代码中使用了Python内置的socket和math库。
**服务器端代码:**
```python
import socket
import math
HOST = '127.0.0.1' # 服务器IP地址
PORT = 8000 # 服务器端口号
# 创建TCP套接字并绑定IP地址和端口号
server_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_sock.bind((HOST, PORT))
# 监听客户端连接请求
server_sock.listen(1)
print('Waiting for client connection...')
while True:
# 接受客户端连接请求
conn, addr = server_sock.accept()
print('Connected by', addr)
# 接收客户端发送的正整数n
data = conn.recv(1024)
n = int(data.decode())
print('Received n =', n)
# 计算n!
fact = math.factorial(n)
# 将计算结果发送给客户端
result = str(fact).encode()
conn.sendall(result)
# 关闭连接
conn.close()
```
**客户端代码:**
```python
import socket
HOST = '127.0.0.1' # 服务器IP地址
PORT = 8000 # 服务器端口号
# 创建TCP套接字并连接服务器
client_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
client_sock.connect((HOST, PORT))
# 输入正整数n并发送给服务器
n = int(input('Enter a positive integer n: '))
client_sock.sendall(str(n).encode())
# 接收服务器发送的计算结果
data = client_sock.recv(1024)
result = int(data.decode())
print('Factorial of', n, 'is', result)
# 关闭连接
client_sock.close()
```
运行服务器端代码后,会等待客户端连接请求。运行客户端代码后,会提示用户输入一个正整数n,并将其发送给服务器。服务器接收到n后,计算n!并将结果发送给客户端。客户端接收到结果后,将其打印出来并关闭连接。
阅读全文