日期:2014-05-16  浏览次数:20758 次

刚刚接触linux,问下,socket硬件断连接后,系统会主动调用哪个函数。
事情的起因是这样的,我发现用getsocketopt可以查询socket连接状态。那么,是哪个函数更改了这个状态。又怎么才能在这个状态发生更改时,第一时间知道。

------解决方案--------------------
以tcp来举例.
tcp总共有11种状态. http://www.2cto.com/net/201209/157585.html
但是对于使用tcp来说,至于这11种状态的变迁是在内核中自动完成的.通过程序中调用send,recv,sendto,recvfrom,socket,connect,bind,close等相关api的调用触发内核中socket的状态的的改变
这么多状态对程序员没太多意义.使用时只用关注sockfd是否出错,,是否连接成功,是否关闭,是否可以发送数据,是否可以读取数据这4种情况就行了.
这4种情况有一类IO复用函数select/poll/epoll来一次监控多个sockfd. 用法自己百度.