我在项目中遇到一个用java 和 c++ 程序通信的问题,后台目前是用c++程序写的一个基于tcp通信的server,现在前台目前我是用java socket和c++通信的,同时做了一个java的socket连接池,现在的问题是,我怎么确保每次从连接池里拿到的连接都是有效的,也就是怎么确定c++那边的server服务没有停止。java的socket中的isClosed()、isConnected()、isInputStreamShutdown()、isOutputStreamShutdown()等,但经过试验并查看相关文档,这些方法都是本地端的状态,无法判断远端是否已经断开连接。希望有知道的朋友不吝赐教哦,谢谢!

解决方案 »

  1.   

    牛人,我是做web的,想搞一下这个,不知道怎么入手
      

  2.   

    如果你用的长连接方式的话,服务器端如果检测到客户端长时间无数据交换,你会主动断开连接,有时你的客户端会检测不到,所以双方都有链路检测机制,如果需要保持长连接,一般用心跳包策略;java客户端,不是有setSoTimeout(int timeout) 方法吗,如果发送数据,timeout过的话,一般认为连接断了,需要再次连接
      

  3.   

    那个简单吧,你只有连接不到服务器的serviceSocket的端口就可以认为是关掉了,