写了个Socket的客户端和服务端的程序。
客户端是一个Socket池,阻塞模式,每次需要发送数据时从池里取一个有效的Socket,Socket池有心跳包机制,每隔一段时间自动发送心跳包。代码在http://www.cnblogs.com/congblog/archive/2012/03/26/2418787.html
服务端是异步的,每收到一个请求开一个线程。接收完数据后马上send一段数据回客户端,并继续等待接收数据。代码在 http://www.cnblogs.com/congblog/archive/2012/03/26/2418804.html
正常情况下一切都正常,发送、接收数据都没问题,心跳包也运作正常。但是在服务端停止一段时间后,重新运行服务端,这时客户端的心跳发送到服务端也是正常的,但是客户端一直阻塞收不到服务端的返回,但是调试发现服务端已经发送成功并且回调了endsend方法。为什么客户端一直收不到呢?更奇怪的是以非心跳包的形式调用一次,就一切都正常了。哪位大侠帮忙看看问题出在哪里,感谢
写的 好复杂啊。
还好吧
后来测试,发现只有两个程序都运行在本机才会出现,局域网、远程运行都不会。应该是程序跑太快,有竞争冒险。