2021-10-03

本文探讨了一个TCP服务端和客户端的简单实现。在客户端代码中,当添加`time.sleep(2)`后出现错误。问题在于,TCP连接在发送数据后可能需要保持活动状态以接收响应,而`time.sleep()`会导致客户端暂停,错过服务端的回应,从而引发错误。解决方法是使用适当的消息确认机制或调整程序流程以避免在关键通信阶段使用`time.sleep()`。
摘要由CSDN通过智能技术生成

为什么加个#time.sleep(2)就报错?

看不懂,就很烦。希望有懂的。

TCP服务端:


import socket
#创建套接字
tcp_server = socket.socket(socket.AF_INET,socket.SOCK_STREAM)

#获取本机的ip地址和端口号
ip = "127.0.0.1"
port = 8081
#绑定ip地址和制定的端口号
address = tcp_server.bind((ip,port))
#print(f'服务端addess{address}')
#开启监听模式,把服务器变成被动接受状态
tcp_server.listen(5)
#开始接受客户端的请求,并把系统分配的用于通信的新的套接字信息和端口信息进行解包
print(f'服务器进入等待状态!')
new_socket,new_port = tcp_server.accept()
print("1")
#获取的数据系统用于通信的新套接字所recv到的信息进行gbk解码之后的信息
while True:
    data = new_socket.recv(512).decode("gbk")
    if not data:
        break
    print(f'收到的消息:{data}')
    dataList = data.split("FFFFFF")
    key = 1
    for i in dataList:
        print(f'消息{key}:{str(i)}')
        key +=1
    a = '我收到了你的消息:'+data
    b = a.encode("gbk")
    new_socket.send(b)
print("断开链接")
new_socket.close()
tcp_server.close()

''' netstat -an|find /i "8081" ''' "cmd 查看端口占用程序(或者该端口是否被使用)"

TCP客户端:

import socket
import time
tcp_client = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
ip = "127.0.0.1"
port = 8081
#address = tcp_client.bind((ip,port))
# 请求连接服务器
address = tcp_client.connect((ip,port))
#print(f'客户端addess{address}')
# 发送的内容,要经过gbk格式的编码
content = "你好".encode("gbk")
a = "1111222FFFFFF666244931FFFFFF82213325FFFFFFrrgfshgfvssfdhtrstvsdf".encode("gbk")
# 将内容发送出去
tcp_client.send(content)
#time.sleep(2)

#为什么加个#time.sleep(2)就报错?
#我觉得没做错什么
#可能是还不够了解
#我说的不是代码
tcp_client.send(a)
recvd = tcp_client.recv(512)
print(f'收到:{recvd.decode("gbk")}')
# 关闭套接字
tcp_client.close()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值