Python中socket里的.recv()函数问题

Python中socket里的.recv()函数问题,第1张

可以通过setsockopt,或者更简单的setblocking,

settimeout设置。阻塞式的socket的recv服从这样的规则:

缓冲区内有数据时,立即返回所有的数据;当缓冲区内无数据时,阻塞直到缓冲区中有数据。非阻塞式的socket的recv服从的规则则是:

当缓冲区内有数据时,立即返回所有的数据;当缓冲区内无数据时,产生EAGAIN的错误并返回(在Python中会抛出一个异常)。两种情况都不会返回空字符串,返回空数据的结果是对方关闭了连接之后才会出现的。

所谓阻塞方式block,顾名思义,就是进程或是线程执行到这些函数时必须等待某个事件的发生,如果事件没有发生,进程或线程就被阻塞,函数不能立即返回。 例如socket编程中connect、accept、recv、recvfrom这样的阻塞程序。

1、函数kbhit()是: 检查当前是否有键盘输入,若有则返回一个非0值,否则返回0 。

2、函数名:kbhit()(VC++60下为_kbhit())

3、用法:int kbhit(void);

4、包含头文件: include <conioh>

5、kbhit() 在执行时,检测是否有按键按下,有按下返回非0值,一般是1;没有按下返回0;

是非阻塞函数。

6、getch() 在执行时,检测按下什么键,如果不按键该函数不返回,是阻塞函数。

stdin 和 stdout 还有strerr 都是特殊的文件描述符而已,不可能阻塞的 。。它们用数字表示就是0,1,2;阻塞是在fget这个函数里面 。这个你有行库的话,你可以去看看库里面是怎么实现的。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/13494616.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2025-09-01
下一篇2025-09-01

发表评论

登录后才能评论

评论列表(0条)

    保存