qq_43412960 2019-11-13 15:02 采纳率: 78.6%
浏览 192
已采纳

这是一个关于python的socket问题

service

import   socket
quest=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
quest.bind(('127.0.0.1',66))
quest.listen(2)
tao,en=quest.accept();

tao.send('hellow  成功'.encode())
a=tao.recv(100)
print(a.decode())
tao.close()
quest.close()

quest

import  socket
quest=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
quest.connect(('127.0.0.1',66))
quest.send(input().encode())
quest.recv(1000)
quest.close()

这是我写的两段代码,分别是客户端和服务器的。
我很奇怪一个事情,就是 我感觉 一方先send信息后,另外一方先recv信息才对 。因为程序是顺序执行的嘛。
可是我把两个代码send语句都放在recv语句之前,为啥还能成功呢

  • 写回答

3条回答 默认 最新

  • threenewbee 2019-11-13 18:37
    关注

    两个程序无论谁快谁慢,都无所谓,因为recv会等待,但是send不会。
    发送的数据会被放在缓冲区。

    打一个比方,双方都给对方写信,然后去取对方的信。双方此时并不知道对方正在给自己写信(除非写了寄过来收到),也不需要等对方写了信,自己才能写。
    双方都是写好信,然后再等在自己的信箱旁收对方的信。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 关于#python#的问题:求帮写python代码
  • ¥20 MATLAB画图图形出现上下震荡的线条
  • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
  • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
  • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
  • ¥15 perl MISA分析p3_in脚本出错
  • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
  • ¥15 ubuntu虚拟机打包apk错误
  • ¥199 rust编程架构设计的方案 有偿
  • ¥15 回答4f系统的像差计算