阻塞和socket状态

来源:12-2 IO 多路复用 (select、poll 和 epoll)

平地一声雷d

2019-11-25

socket使用了connect连接时,阻塞的话,是不是后面代码不会执行。
另外我想问下socket状态的问题,这个状态是指什么,我感觉好像是有一个比如write协议之类通过后,才能使用send方法或是read协议通过才能使用recv方法

写回答

1回答

bobby

2019-11-26

1. 是的,如果是阻塞模式。connect的情况只要对方没有返回这里就一直等着,但是一般情况下socket都会有超时机制,所以过了一段时间没有返回就会抛出异常

2. 状态的问题其实也好理解,就是socket表示的是一个接口是否可以写入?是否可以读取?因为只要涉及到网络一定会有一个情况,就是windows维护这么多socket,那windows怎么知道目前哪个网络连接已经返回等,为了维护这么多socket连接的问题。也就提出了一个状态来表明目前这个socket可以进行的下一步操作

3. 你这里提到的write之类的其实也就是windows为了维护各种连接的情况才提出的状态问题。但是比你想的更加完善

0
0

Python3高级核心技术97讲,高级进阶的必学课程

socket编程/多线程/多进程/线程池/asyncio并发编程/协程和异步IO

2121 学习 · 551 问题

查看课程