账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    非阻塞状态下recv返回值问题
    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函数,上述代码将会阻塞,直到有数据可以接收。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部