希望你能帮忙。我对编程比较新,并且正在尝试使用Java套接字。
问题出在以下代码。不知何故,commSocket = new Socket(hostName, portNumber);
即使没有连接到服务器(服务器尚未实现!)也会返回true。对此有什么想法吗?
对于hostName,我传递的是我的本地机器IP,对于端口则是手动选择的端口。
public void networkConnect(String hostName, int portNumber){
try {
networkConnected = false;
netMessage = "Attempting Connection";
NetworkMessage networkMessage = new NetworkMessage(networkConnected, netMessage);
commSocket = new Socket(hostName, portNumber);
// this returns true!!
System.out.println(commSocket.isConnected());
networkConnected = true;
netMessage = "Connected: ";
System.out.println("hellooo");
} catch (UnknownHostException e){
System.out.println(e.getMessage());
} catch (IOException e){
System.out.println(e.getMessage());
}
}
非常感谢。
编辑:new Socket(.., ..); 是阻塞的,不是吗?我认为在这种情况下,如果没有异常处理,那么我们就有了一个真正的连接?
编辑:我调整了一下反病毒软件,现在它可以工作了!
new Socket(...)
绝对不会返回true
。它会返回一个新的Socket
对象,如果没有抛出异常的话。 - Joachim Sauer