编写TCP程序,由客户端发送正整数n,服务端计算n!并返回
时间: 2024-05-05 10:21:04 浏览: 6
以下是一个简单的 TCP 客户端和服务器端的 Python 代码实现:
客户端:
```python
import socket
def client():
# 创建 TCP 套接字并连接到服务器
client_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 8888)
client_socket.connect(server_address)
# 输入正整数 n
n = input("请输入正整数 n:")
# 发送 n 到服务器
client_socket.sendall(n.encode())
# 接收服务器返回的计算结果
result = client_socket.recv(1024)
print("n! = ", result.decode())
# 关闭套接字
client_socket.close()
if __name__ == '__main__':
client()
```
服务端:
```python
import socket
def factorial(n):
# 计算 n!
if n == 0:
return 1
else:
return n * factorial(n-1)
def server():
# 创建 TCP 套接字并绑定到本机任意可用的端口
server_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
server_address = ('localhost', 8888)
server_socket.bind(server_address)
# 监听连接请求
server_socket.listen(1)
print("等待客户端连接......")
while True:
# 接受客户端连接请求
client_socket, client_address = server_socket.accept()
print("客户端已连接:", client_address)
# 接收客户端发送的正整数 n
n = int(client_socket.recv(1024).decode())
print("接收到正整数 n =", n)
# 计算 n!
result = factorial(n)
# 发送计算结果到客户端
client_socket.sendall(str(result).encode())
# 关闭客户端套接字
client_socket.close()
print("客户端已断开连接")
if __name__ == '__main__':
server()
```
请注意,此代码仅实现了最基本的 TCP 客户端和服务器端通信,没有进行错误处理和安全措施。在实际生产环境中,需要根据实际情况进行修改和完善。