网络编程-SO_ERROR

Posted by 周思进 on December 10, 2019

网络编程-超时连接里有同感SO_ERROR套接字选项来获取套接字错误信息,平常获取错误信息,都是通过errno变量来查看,就对两者的使用场景比较困惑了。

因为实际编程中,大部分网络编程接口出错时的处理,基本都是通过errno变量来获取的。

通过查看《UNIX网络编程卷1》第7章,有两种情况需要通过SO_ERROR套接字选项来获取错误信息。一种是进程阻塞在select上,该接口返回可通过SO_ERROR选项来获取,前面超时连接中就是此种情况。另一种就是进程使用信号驱动式I/O模型。

这样看来,我们需要通过SO_ERROR选项来获取错误的场景还是很少的,基本还是通过errno来获取错误信息。

另外需要注意的就是,通过getsockopt获取SO_ERROR对应的变量so_error值后,该变量就会自动清0,也就是紧接着再获取一次,就是0了。