编写TCP程序,由客户端发送正整数n,服务端计算n!并返回
时间: 2024-05-01 20:20:50 浏览: 96
以下是一个基本的TCP客户端和服务端代码实现,用于实现客户端发送一个正整数n到服务端,服务端计算n!并返回给客户端:
**服务端代码:**
```python
import socket
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
# 创建socket对象
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名
host = socket.gethostname()
# 设置端口号
port = 9999
# 绑定端口号
server_socket.bind((host, port))
# 设置最大连接数,超过后排队
server_socket.listen(5)
while True:
# 建立客户端连接
client_socket, addr = server_socket.accept()
print("连接地址:%s" % str(addr))
# 接收客户端发送的数据
data = client_socket.recv(1024)
# 将接收到的数据转换为整数
n = int(data.decode('utf-8'))
print("客户端发送的整数为:%d" % n)
# 计算n的阶乘
result = factorial(n)
# 将计算结果转换为字符串
result_str = str(result)
# 向客户端发送计算结果
client_socket.send(result_str.encode('utf-8'))
# 关闭连接
client_socket.close()
```
**客户端代码:**
```python
import socket
# 创建socket对象
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 获取本地主机名
host = socket.gethostname()
# 设置端口号
port = 9999
# 连接服务端
client_socket.connect((host, port))
# 输入正整数n
n = int(input("请输入正整数n:"))
# 将n转换为字符串并发送到服务端
client_socket.send(str(n).encode('utf-8'))
# 接收服务端发送的计算结果
result_str = client_socket.recv(1024)
# 将接收到的计算结果转换为整数
result = int(result_str.decode('utf-8'))
print("计算结果为:%d" % result)
# 关闭连接
client_socket.close()
```
以上代码实现了TCP客户端向服务端发送一个正整数n,服务端计算n!并返回给客户端的功能。在实际使用过程中,需要对代码进行优化和错误处理。
阅读全文