另一方面,问题的说明需要发送超过1024字节的消息,但由于recv函数的缓冲区被设置为1024字节,因此(以太网的MTU为1500字节,不能设定得更大)通过循环接收缓冲区的消息
total _ data=b ' ' data=client.recv (1024 ) while data: # )对接收到的数据进行拼接total _ data=data=client.recv 万一消息的末尾正好被切断,程序可能会进入死循环,发送的消息可能会出现end。 于是选择了最初的方案。
二.解决办法
把要发送的消息的长度发送给服务器端,听起来很简单,但其实不太容易。 直接用send发送长度后再发送消息,容易出现包粘贴问题,需要提取标头才能为要发送的消息写入信息,非常麻烦。
之后,考虑密码学中的模的概念,如果每个缓冲区取出1024字节,取出剩下的话,剩下的消息的长度小于1024,不久就意味着后面没有消息了吗?
三.实验结果#客户端发送信息client.sendall(message )服务器端接收信息total_data=bytes ) while True: # )对接收到的数据进行连接,生成data
最后成功打印了客户端发送的长消息。