最近碰到一个很莫名的问题,相同的代码
public class SocketTest extends Thread {
public static void main(String[] args){
SocketTest thread=new SocketTest();
thread.start();
}
@Override
public void run() {
System.out.println("start");
String ip="192.168.3.97";
int port=8455;
System.out.println(ip);
System.out.println(port);
Socket socket = new Socket();
try {
socket.bind(new InetSocketAddress(InetAddress.getLocalHost().getHostAddress(), 8666));
SocketAddress remoteAddr = new InetSocketAddress(ip, port);
socket.connect(remoteAddr, 60000);
System.out.println(socket);
System.out.println("end");
} catch (UnknownHostException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
直接在windows的命令行通过java SocketTest能得到正确的结果
E:>java SocketTest
start
192.168.3.97
8455
Socket[addr=/192.168.3.97,port=8455,localport=8666]
end
但是在Eclipse里面运行就提示这样的错误
java.net.ConnectException: connect: Address is invalid on local machine, or port is not valid on remote machine
at java.net.PlainSocketImpl.socketConnect(Native Method)
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
at java.net.Socket.connect(Socket.java:519)
at com.jetch.test.SocketTest.run(SocketTest.java:30)
Eclipse里面的install JREs已经跟javahome指定的是同一个文件夹了