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 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器