gpt4 book ai didi

Java TCP 套接字 : java.net.ConnectException : connect: Address is invalid on local machine, 或端口在远程计算机上无效

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:15:05 25 4
gpt4 key购买 nike

我正在使用 socket = new Socket(host, port, InetAddress.getLocalHost(), clientPort); 创建套接字。我希望套接字在客户端监听特定端口。但是当我使用 InetAddress.getLocalHost() 我得到 java.net.ConnectException: connect: Address is invalid on local machine, or port is not valid on remote machine.

但是当我使用 InetAddress.getByName("localhost") 时它工作正常。但是我需要服务器端机器的IP地址。所以当我使用 socket.getInetAddress() 时,我想要 ipadress 而不是 127.0.0.1。

谁能帮忙。我正在使用 eclipse 。这可能是防火墙问题吗?

谢谢

最佳答案

您正在使用 Socket 构造函数的四参数形式(真的很不寻常;仅使用两个参数形式并让操作系统自己找出本地地址端是正常的)所以您需要确保与套接字关联的两个地址是兼容的,即可以通过这种方式路由数据包。特别是,如果任何一端是本地主机,另一端也必须是本地主机,因为该地址仅通过环回网络接口(interface)路由。

对您来说(在客户端)最简单的解决方法是切换到使用双参数构造函数,让操作系统为您找出其余部分;它做得很好。 (如果服务器依赖于来自特定端口号的 client 连接,那就太糟糕了,而且非常脆弱。)

关于Java TCP 套接字 : java.net.ConnectException : connect: Address is invalid on local machine, 或端口在远程计算机上无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8200187/

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