服务端代码:
ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();
System.out.println(socket.getRemoteSocketAddress());客户端代码:
socket = new Socket("192.168.1.100",8888);
System.out.println(socket.getLocalSocketAddress());
服务端输出:/127.0.0.1:5702
客户端输出:/127.0.0.1:5701
问题:为什么一个端口号是5702,一个端口号是5701,怎么不相等啊???
并且,每次测试的结果都是这两个端口号相差1,为什么???应该相等才对啊!!我的环境:操作系统Windows 7, JDK 1.6。
ServerSocket serverSocket = new ServerSocket(8888);
Socket socket = serverSocket.accept();
System.out.println(socket.getRemoteSocketAddress());客户端代码:
socket = new Socket("192.168.1.100",8888);
System.out.println(socket.getLocalSocketAddress());
服务端输出:/127.0.0.1:5702
客户端输出:/127.0.0.1:5701
问题:为什么一个端口号是5702,一个端口号是5701,怎么不相等啊???
并且,每次测试的结果都是这两个端口号相差1,为什么???应该相等才对啊!!我的环境:操作系统Windows 7, JDK 1.6。
我是说服务端的getRomteAddress和客户端的getLocalAddress指的都是一个地址,应该相同,但实际结果却不同。我又做了几个试验,发现这段程序在WinXP上运行得到的结果是两地址相同,而在win7上运行却得到两地址不相等的结果。
这个意思是不是说,服务端收到的进程和客户端实际的进程并不是同一个?这是WIN7的某种机制么?
怀疑WIN7是不是搞了什么安全机制,做了个代理什么的……