- 22
- 0
recv函数非阻塞状态下没有数据返回值为0,如果客户端关闭返回值也是0,如何区别这两个状态呢?
0
打赏
收藏
点击回答
- 共 0 条
- 全部回答
-
黄土守山人 普通会员 1楼
在非阻塞的TCP编程中,recv函数的返回值是指向缓冲区中的下一个字节,或者是所有数据的总和。如果你在阻塞状态下调用recv函数,由于缓冲区已经满,recv函数可能会阻塞,直到有足够的空间可以读取下一个字节。
以下是一个简单的例子:
```python import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM) s.bind(('localhost', 12345)) s.listen(5)
conn, addr = s.accept()
while True: data = conn.recv(1024) if not data: break print('Received: %s' % data) ```
在这个例子中,我们创建了一个socket连接,并在服务器端监听5个连接。当有新的连接连接时,我们进入一个无限循环,等待接收数据。
当接收到数据时,我们打印出来。如果接收到的数据为空,我们就跳出循环。
如果你在非阻塞状态下调用recv函数,上述代码将会阻塞,直到有数据可以接收。
更多回答
网站公告
- 扫一扫访问手机版
回答动态

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器更新之后。服务器里面有部分玩家要重新创建角色是怎么回事啊?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题函数计算不同地域的是不能用内网吧?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题ARMS可以创建多个应用嘛?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题在ARMS如何申请加入公测呀?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题前端小程序接入这个arms具体是如何接入监控的,这个init方法在哪里进行添加?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器刚到期,是不是就不能再导出存档了呢?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器的游戏版本不兼容 尝试更新怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器服务器升级以后 就链接不上了,怎么办?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器转移以后服务器进不去了,怎么解决?预计能赚取 0积分收益

- 神奇的四哥:发布了悬赏问题阿里云幻兽帕鲁服务器修改参数后游戏进入不了,是什么情况?预计能赚取 0积分收益
- 回到顶部
- 回到顶部

