怎么实时检测一个socket是否还有效的是否还可用,以便对网络连接中断等错误的处理

如何实时检测一个socket是否还有效的是否还可用,以便对网络连接中断等异常的处理
如题了,就是无论是TCP还是UDP,在服务器和客户端建立了socket连接后,希望能随时检测这个socket是否还是还是有效的,以便判断网络连接是否中断并做相应的处理,网上好像有一个心跳包的,不知道是否可行,而且好像是TCP才有心跳包,那UDP怎么办呢?请高手指点一下,万分感谢!

------解决方案--------------------
发点数据,一问一答,就是所谓的心跳包,心跳包是用户数据,套接字不会区分对待,所以心跳包和你发送普通数据是完全一样的。

udp也可以做心跳包,你说的不能做,是什么原因,还是有人告诉你的?
------解决方案--------------------
引用:
如题了,就是无论是TCP还是UDP,在服务器和客户端建立了socket连接后,希望能随时检测这个socket是否还是还是有效的,以便判断网络连接是否中断并做相应的处理,网上好像有一个心跳包的,不知道是否可行,而且好像是TCP才有心跳包,那UDP怎么办呢?请高手指点一下,万分感谢!

socket只有在做函数调用时,才可以知道状态,例如你去读它或者写它,它才能返回它是否还活着。
tcp做心跳是为了处理例如拔网线,机器直接挂了等等类似对方无法及时给你发RST而导致你永远不知道对方掉线了这种情况。还有,心跳没什么一问一答,心跳只是告诉对方我在而已。