gpt4 book ai didi

java - 用java在远程机器上打开ServerSocket?

转载 作者:行者123 更新时间:2023-12-02 00:36:36 26 4
gpt4 key购买 nike

我创建了一个简单的方法来尝试确定远程计算机上的套接字是否打开。这是我的代码:

public static Boolean isPortAvailable( int port, String bindAddr  ) {
try {
System.out.println("IP: " + InetAddress.getByName(bindAddr ));
ServerSocket srv = new ServerSocket(port, 0, InetAddress.getByName(bindAddr ) );

srv.close();
srv = null;
return true;

} catch (IOException e) {
return false;
}
}

传递这两个参数:

String bindAddr  = "remotemachinename";
int port = 1719;

它继续告诉我端口不可用,但如果我在机器上尝试 netstat -a,我会发现它显然没有在使用中。我错过了什么吗?

最佳答案

如果您想联系监听(服务器)套接字,您应该使用Socket而不是ServerSocket。请参阅ServerSocket javadoc ,ServerSocket 构造函数的第三个参数是要绑定(bind)本地地址,而不是连接远程地址到。

试试这个:

try {
InetAddress addr = InetAddress.getByName(bindAddr);
Socket sock = new Socket();
SocketAddress sockaddr = new InetSocketAddress(addr, port);
int timeout = 1000; // wait for 1 second = 1000ms (adapt to your use case)
sock.connect(sockaddr, timeout);
} catch (UnknownHostException e) {
} catch (SocketTimeoutException e) {
// nobody's listening or willing to accept our connection...
} catch (IOException e) {
}

关于java - 用java在远程机器上打开ServerSocket?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7638522/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com