用python写一个socket TCP连接、发送1024字节数据、匹配接收数据、断开连接,并统计连接成功率、连接平均时长、发送成功率、发送次数、接收成功绿、接收次数、匹配成功率、匹配次数
时间: 2023-09-17 09:11:22 浏览: 31
以下是一个示例代码,实现了上述功能:
```python
import socket
import time
# 设置连接信息
HOST = 'localhost'
PORT = 8888
MSG = b'Hello, world!'
# 统计信息
connection_count = 0
connection_success_count = 0
connection_total_time = 0
send_count = 0
send_success_count = 0
recv_count = 0
recv_success_count = 0
match_count = 0
match_success_count = 0
# 循环执行连接、发送、接收、匹配、断开连接
for i in range(100):
# 连接
start_time = time.time()
try:
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect((HOST, PORT))
connection_success_count += 1
except:
print('Connection failed')
continue
end_time = time.time()
connection_count += 1
connection_total_time += end_time - start_time
# 发送数据
try:
sock.sendall(MSG)
send_success_count += 1
except:
print('Send failed')
sock.close()
continue
send_count += 1
# 接收数据
try:
data = sock.recv(1024)
recv_success_count += 1
except:
print('Receive failed')
sock.close()
continue
recv_count += 1
# 匹配数据
if data == MSG:
match_success_count += 1
match_count += 1
# 断开连接
sock.close()
# 输出统计信息
print(f'Connection success rate: {connection_success_count / connection_count:.2f}')
print(f'Connection average time: {connection_total_time / connection_count:.2f}s')
print(f'Send success rate: {send_success_count / send_count:.2f}')
print(f'Send count: {send_count}')
print(f'Receive success rate: {recv_success_count / recv_count:.2f}')
print(f'Receive count: {recv_count}')
print(f'Match success rate: {match_success_count / match_count:.2f}')
print(f'Match count: {match_count}')
```
这段代码连接了100次,每次发送1024字节的数据,并且统计了连接成功率、连接平均时长、发送成功率、发送次数、接收成功率、接收次数、匹配成功率、匹配次数。可以根据需要修改HOST、PORT、MSG等参数。