同步SOCKET挂死问题,很急,请大侠出手!!!
环境为JDK1.4 turboLinux 10.
在这个环境下发送消息到服务器,使用的是同步socket,设置了同步socket超时定时器,并catch了异常,如果服务器返回的响应消息中的checksum不对,那么会导致这个socket就挂死了,定时器超时也无法处理,也无法catch到任何异常。
目前在多台机器上得到证实,目前怀疑的问题有JDK和LINUX,不知道哪位大侠是否遇到过同样问题,请帮忙看看,非常急,多谢!!!
环境为JDK1.4 turboLinux 10.
在这个环境下发送消息到服务器,使用的是同步socket,设置了同步socket超时定时器,并catch了异常,如果服务器返回的响应消息中的checksum不对,那么会导致这个socket就挂死了,定时器超时也无法处理,也无法catch到任何异常。
目前在多台机器上得到证实,目前怀疑的问题有JDK和LINUX,不知道哪位大侠是否遇到过同样问题,请帮忙看看,非常急,多谢!!!
现在都使用NIO了,不使用同步Socket,是容易死锁啊。
老项目,没有出大问题,是不会修改的,呵呵。
从运行情况上看还没有导致有死锁发生过,除了这次因为服务器返回的响应中checksum不对导致问题。
那你将checksum逻辑不要在当前线程运行,使用另外线程来检验。socket不会自己去进行checksum的
这个检查udp报文中的checksum是否正确,不是业务来做的,是JDK的native方法做的吧。
您的意思是在发送同步socket的线程里面,再创建一个线程,一个线程用来检验发送线程是否dead?
我表示怀疑,不是非常清楚,UDP应该自己不检查包正确性,是使用者来检查,因为UDP本身就不稳定。
这个死锁问题应该是程序本身导致的,和系统和JDK关系不大。