gpt4 book ai didi

python - 套接字类比 : a pipe or two pipes?

转载 作者:行者123 更新时间:2023-12-01 03:34:34 28 4
gpt4 key购买 nike

对于描述两个 INET 套接字之间的通信 channel ,以下是一个更好的类比:

  • 一个双向“管道”
  • 两个单向“管道”

如果我将某些内容发送到双向“管道”,然后立即尝试从那里接收某些内容,我希望能返回我刚刚发送的内容(除非另一端同时设法消耗它) )。

如果有两个单向管道,一个用于发送,另一个用于接收(另一端反之亦然),那么我希望一端的写入不会影响同一端的读取。

我是套接字新手,在阅读了 Python Socket HOWTO 后,我无法判断正在使用哪种模型。我试图通过实验来推断它,但我不确定我是否正确设置了它。

那么,一端发送会影响同一端接收吗?还是说这些方向是分开的,就像有两个“管道”一样?

最佳答案

If I'm sending something to a two-directional "pipe" and then right away try to receiving something from there, I'm expecting to get back what I just sent (unless other end managed to consume it in the meanwhile).

简短的回答是:不,这不是 python 套接字的工作原理。

要对此进行测试,请尝试这些代码片段

服务器.py

#!/usr/bin/python

from socket import *
import time

if __name__ == '__main__':
s = socket(AF_INET, SOCK_STREAM)
s.bind(('localhost', 5000))
s.listen(1)
conn,addr = s.accept()
print conn,addr
time.sleep(2)
print "Unceremoniously closing the connection"

客户端.py

#!/usr/bin/python

from socket import *

if __name__ == '__main__':
s = socket(AF_INET, SOCK_STREAM)
s.connect(('localhost',5000))

s.send('hello!!')

data = s.recv(1024)

print data

运行

python server.py

然后

python client.py

客户端不会接收任何数据,并在等待接收数据时抛出异常。

(顺便说一句,这是针对 python 2.7 的)

关于python - 套接字类比 : a pipe or two pipes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40513969/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com