hi,大侠们好!
我这里遇到你个比较奇怪的问题,就是socket连接,在一台机器上socket客户端连接前置主机,前置主机是关闭的,但是socket连接状态显示已连接上------这个问题很奇怪同一段代码,放在其他机器上运行,如果前置不开就显示该socket没有连接上去,这是为什么呢?希望大虾们给与解答,小弟谢谢了,测试代码如下:public static void main(String[] args) {
// TODO Auto-generated method stub
int tryCount = 0;
int count = 3;
Socket clientSocket = null;
while ((tryCount <= count)) {
try { if (clientSocket == null) {
clientSocket = new Socket();
} else {
clientSocket = new Socket();
} InetSocketAddress addr = new InetSocketAddress("127.0.0.1",
12345); clientSocket.connect(addr, 3000);
clientSocket.setSoLinger(true, 0); System.out.println("["
+ new Date().toString()
+ "]-----connect flag:"
+ (clientSocket.isConnected() && !clientSocket
.isClosed())); if ((clientSocket.isConnected() && !clientSocket.isClosed())) {
break;
}else{
tryCount++;
}
} catch (SocketTimeoutException soe) { System.out.println("[" + new Date().toString()
+ "]-----SocketTimeoutException:" + soe.toString()); System.out.println("[" + new Date().toString()
+ "] -----tryCount:" + tryCount + ""); tryCount++;
} catch (IOException ioe) { System.out.println("[" + new Date().toString()
+ "] -----IOException:" + ioe.toString()); System.out.println("[" + new Date().toString()
+ "]-----tryCount:" + tryCount + ""); tryCount++;
} catch (Exception ee) { System.out.println("[" + new Date().toString()
+ "] -----Exception:" + ee.toString()); System.out.println("[" + new Date().toString()
+ "]-----tryCount:" + tryCount + ""); tryCount++;
}
} if (clientSocket != null && clientSocket.isConnected()
&& !clientSocket.isClosed()) {
System.out.println("[" + new Date().toString()
+ "]-----clientSocket.isConnected():"
+ (clientSocket.isConnected() && !clientSocket.isClosed()));
} else {
System.out.println("[" + new Date().toString()
+ "]-----clientSocket.isConnected():false");
}
}

解决方案 »

  1.   

    大家好,这个问题已经找到了,谢谢大家!原因是因为那台机器上面安装了一个杀毒软件造成的,禁用它,或者卸载掉就可以正常获取连接了;另外一个解决方法就是,java jdk 版本换成1.6 ,也可以的。
      

  2.   

    大家好,这个问题已经找到了,谢谢大家!原因是因为那台机器上面安装了一个杀毒软件造成的,禁用它,或者卸载掉就可以正常获取连接了;另外一个解决方法就是,java jdk 版本换成1.6 ,也可以的。