Код: Выделить всё
socket.connect(new InetSocketAddress(tool.getHost(), tool.getPortTool()), timeout);Код: Выделить всё
package esempioSocket;
import java.io.IOException;
import java.net.InetAddress;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.net.UnknownHostException;
import esempioSocket.Tool;
public class Main {
public static void main(String[] args) throws IOException {
Tool tool = new Tool("10.39.188.101", 6653);
System.out.println("reachele 1: " + tool.isReachable() );
int timeout = 1500;
Socket socket = new Socket();
System.out.println("after new: " + socket);
try {
socket.connect(new InetSocketAddress(tool.getHost(), tool.getPortTool()), timeout);
System.out.println("after connect: " + socket);
} catch (UnknownHostException e) {
System.out.println("run() - UnknownHostException - tool: " + tool.getHost() + ":" + tool.getPortTool());
} catch (IOException e) {
System.out.println("run() - IOException - tool: " + tool.getHost() + ":" + tool.getPortTool());
}
if (socket.isConnected()) {
System.out.println("after isConnect: " + socket);
tool.setReachable(true);
try {
socket.close();
System.out.println("after close: " + socket);
} catch (IOException e) {
System.out.println("run() - socket close() " + e);
}
} else {
tool.setReachable(false);
}
System.out.println("reachele: " + tool.isReachable() );
System.out.println("last line: " + socket);
}
}
Код: Выделить всё
public class Tool {
private String host;
private Integer portTool;
private boolean reachable;
Tool(String h, Integer port) {
this.host=h;
this.portTool=port;
}
........
set and getter
Также
Код: Выделить всё
netstat -an | find "10.39.188.101"
Код: Выделить всё
netstat -an | find "6653"
Когда я запускаю программу, я ожидаю, что, поскольку хост не существует, сокет.connect выдаст мне исключение (или сообщение о том, что соединение не может быть установлено, вместо этого я получаю следующий результат:
Код: Выделить всё
reachele 1: false
after new: Socket[unconnected]
after connect: Socket[addr=/10.39.188.101,port=6653,localport=64473]
after isConnect: Socket[addr=/10.39.188.101,port=6653,localport=64473]
after close: Socket[addr=/10.39.188.101,port=6653,localport=64473]
reachele: true
last line: Socket[addr=/10.39.188.101,port=6653,localport=64473]
Код: Выделить всё
reachele 1: false
after new: Socket[unconnected]
run() - IOException - tool: 11.39.188.101:6653
reachele: false
last line: Socket[unconnected]
Если я запускаю netstat, пока программа все еще работает, и сокет.close не достиг:
< img alt="введите здесь описание изображения" src="
" />arp:

tracert:

Подробнее здесь: https://stackoverflow.com/questions/783 ... t-existing
Мобильная версия