困惑:socket通信使用阻塞模式,一旦对端进程崩溃或者关闭连接,阻塞模式下的socket 的recv不能马上返回值吗?
网上有种说法:阻塞模式下直接使用套接字接收或者发送,如果通信的对端关闭连接或者对端进程崩溃,则这边的recv函数就会长时间不返回值
,但是我实际编了个程序测试了阻塞模式下的recv,发现在对端关闭连接就马上返回0,如果对端进程崩溃,则recv马上返回 < 0; 而且都是立即就能返回,
那么,如果socket通信双方仅用一个套接字发送接收,则select模式和直接阻塞模式使用套接字相比优势在哪里?
我的结论: 1 我觉得所谓”阻塞模式下直接使用套接字接收,一旦通信对方关闭或者进程崩溃,不能马上返回对端这些异常,只有selcet模式可以马上返回异常,“这说法不成立!两者都可以
马上返回值
结论2 :一个套接字情况下,select模式和直接阻塞模式使用套接字相比无优势
(当然,如果通信双方使用>=2个的套接子通信,select还是比仅仅使用两个都阻塞模式的套接字有优势的)
请高人指教,我上述两点是否正确?多谢!满意回复的给分!