Socket心跳包理解历程
2009-03-28 23:35:55| 分类: | 标签: |字号大中小
去年开始接触C/S类型程序,这里就免不了有SOCKET编程,项目需要使用长连接,那么就需要心跳机制。习惯性GOOGLE了下,一个发送一个接收,检测。感觉在服务器上发送挺方便的,于是就在服务器上往客户端上分发,客户端检测。那么如果连接服务器比较多的话,检测就多了,客户端做起来又有些麻烦,后来想到了双向互发。可惜这样也不行,SOCKET使用发送去检测是不可靠的,最后还是使用了客户端发送,服务器检测这种模式。
到现在,对服务器的编程支离破碎也明白了一些,经验太少,遇到的问题不够全面。处理问题能力也不够,还需要多多的学习,毕竟这些东西比一般的程序要求要高。
最后提下.NET的SOCKET连接超时问题,一般在LINUX下,处理超时都先设置非阻塞模式,然后用SELECT去判断超时,但在C#中,如果使用非阻塞模式,那么就直接出异常。开始以为.NET不能直接实现了,后来发现,可以捕获这个异常,然后维护一个连接标志。为了实现这个目标,于是就继承了SOCKET类。重写了连接和关闭方法。
下一步重点放在服务结构学习方面。