问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

python无法立即完成一个非阻止性套接字操作

发布网友 发布时间:2022-04-22 03:46

我来回答

3个回答

热心网友 时间:2022-04-18 23:25

你使用了非阻塞模式,而10035表示数据还没有返回给你。
你可以在接收前先select一下,如果有数据就接受,没有就跳过。
你可参考python官方文档
http://docs.python.org/howto/sockets.html
里面有Non-blocking Sockets的一章可以看看。

import select
...
while 1:
infds,outfds,errfds = select.select([s,],[],[],5)
if len(infds) >0:
....
else:
print "no data coming"

热心网友 时间:2022-04-19 00:43

设置了non-block模式后, recv如果无法接受到数据, 就会报异常. 这个和C下返回EAGAIN的道理是一样的。
你只要加上try...except来判断就可以了
str=s.recv(1)
while 1:
try:
data=s.recv(1)
except:
# sleep
continue
if len(data)==0:
break
str+=data

热心网友 时间:2022-04-19 02:18

这里要改为s.send(b'GET / HTTP/1.1\r\n\r\n')
设置超时就没有异常了
s.settimeout(1)
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Linux系统安装FTP服务器 Linux系统的网络文件共享 建筑的七盏明灯的内容简介 面向对象设计七大原则 简单说 交互设计七大定律 交互设计的“根”——七大定律 交互设计原则和理论2——七大定律 七大设计原则 附近的加油站有哪些 附近的加油站有哪些地方 请教了 iocp 下,如何设置socket 的recv超时 Python socket模块的send和recv 客户端socket的recv怎么设置超时 socket的recv阻塞可不可以设置阻塞超时时间 MFC中socket编程时recv设置超时属性后,如果超时返... python socket 阻塞模式怎么确保数据recv Python的socket编程recv(1024)为什么收不到数据 python recv函数会一直等待吗 python 连接 mysql 超时,请问怎么解决 在Python3中,socket.recv方法如果一段时间内没有收... python3中,socket,当服务器端没有发送数据时,如... python3套接字udp设置接受数据超时 Python中socket里的.recv()函数问题 网上在哪里买药品? 谁知道中国有多少家中药材批发市场. 广州有没有专业申请互联网药品交易服务资格证书的... 中药材交易市场有那些地方 中国四大药材市场 全中国有几大药材市场? 广州站到广东省药品交易中心那个地铁最近 Python data,addr=recv(2048)什么意思 python socket recv 数据是什么类型 timeOut:recv timeout的中文意思是什么 python发邮脚本运行每次都报socket.error: [Errno ... 怎样只登王者,不登QQ? python使用socket发送数据,没有响应。 能不能只登王者不登qq 苹果11登王者荣耀怎么可以不用卸载qq登录? 如何让别人登我的王者帮我玩,但是不顶我QQ下线? 王者号借给别人怎么让他不上qq 王者荣耀如何不用qq微信登陆 王者荣耀怎么取消qq特权登陆? 为什么不用QQ一键登入王者荣耀提示密码错误 为什么王者荣耀下面在每次登陆qq都要先登陆qq以前... 王者荣耀代练打手QQ区。上号怎么才可以不用卸载QQ? 王者荣耀怎么不登陆qq 直接登录 王者荣耀不用 登qq 苹果6s信号特别差,可以修吗 苹果6s手机没有信号怎么回事? 苹果6s手机信号总不好是什么原因