使用套接字连接编写一个网络程序,用户在客户端输入三角形的3条边长,客户端将他们发送给服务器端,服务器吧计算出的三角形的面积返回给客户端,客户端命令行窗口中显示面积值。
时间: 2023-06-26 17:06:05 浏览: 140
编写一个程序,输入三角形的三条边的边长,求三角形的面积。
以下是使用 Python socket 模块编写的服务器和客户端代码:
服务器端代码:
```python
import socket
import math
# 创建一个 TCP/IP 套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 绑定到一个地址和端口上
server_address = ('localhost', 10000)
print('starting up on {} port {}'.format(*server_address))
sock.bind(server_address)
# 监听连接
sock.listen(1)
while True:
# 等待连接
print('waiting for a connection')
connection, client_address = sock.accept()
try:
print('connection from', client_address)
# 接收客户端发送的数据
data = connection.recv(1024)
sides = data.decode().split(',')
a = float(sides[0])
b = float(sides[1])
c = float(sides[2])
# 计算三角形面积
s = (a + b + c) / 2
area = math.sqrt(s * (s - a) * (s - b) * (s - c))
# 发送计算结果给客户端
connection.sendall(str(area).encode())
finally:
# 关闭连接
connection.close()
```
客户端代码:
```python
import socket
# 创建一个 TCP/IP 套接字
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
# 连接到服务器端
server_address = ('localhost', 10000)
print('connecting to {} port {}'.format(*server_address))
sock.connect(server_address)
try:
# 输入三角形的3条边长
a = input('Enter the length of side a: ')
b = input('Enter the length of side b: ')
c = input('Enter the length of side c: ')
# 发送数据到服务器端
message = ','.join([a, b, c])
print('sending {!r}'.format(message))
sock.sendall(message.encode())
# 接收服务器端返回的数据并显示
data = sock.recv(1024)
print('The area of the triangle is:', data.decode())
finally:
# 关闭连接
print('closing socket')
sock.close()
```
注意:以上代码仅供参考,实际应用中需要加入异常处理等内容。
阅读全文