作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
对于描述两个 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/
我是一名优秀的程序员,十分优秀!