我在这行中遇到错误:
new ServerSocket(2106, 50, InetAddress.getByName("83.4.200.1"));
错误日志:
Exception in thread "main" java.net.BindException: Cannot assign requested address: JVM_Bind
83.4.200.1
是我的IP,当我把127.0.0.1
或192.168.1.2
放在同一个端口时,一切都很完美。我已经通过编写netstat -a -n
检查了所有端口,但2106不存在。
非常感谢您阅读本文,我希望您可以帮我解决问题
答案 0 :(得分:3)
您的路由器地址为83.4.200.1
。请务必注意,这不是计算机响应的地址,而是内部网络地址192.168.1.2
。如果要从路由器外部连接到程序,则需要在路由器上为2106
设置端口转发。
答案 1 :(得分:1)
1。如果您想通过互联网使用IP: "83.4.200.1"
访问此服务器,则必须
是你的静态IP,而不是动态的。
2. 尝试使用私有IP地址或公共IP地址运行此代码,该地址分配给您在LAN中的电脑(ie. Without internet..JUST WITH WIRELESS CONNECTION).
3。私有IP或公共IP没有任何意义,除非你在互联网上。直到那时你可以同时使用它作为局域网。
4. 私人广告系列
A类: 10.0.0.0 - 10.0.0.255 B类: 172.16.0.0 - 172.31.255.255 C类: 192.168.0.0 - 192.168.255.255
5. 公共服务提供商提供服务,该服务提供商将是私有IP范围内的任何人。如果您的IP不是静态的,那么您很难或没有机会通过互联网访问服务器,有些网站会提供动态IP的静态IP。
答案 2 :(得分:1)
83.4.200.1是我的IP
这是路由器的IP地址。
它不是您运行代码的主机的IP地址,因此您无法绑定它。您需要绑定到该主机的本地地址,并安排从路由器到主机的端口转发。通常最好省略bind-address,只需指定一个端口,在这种情况下套接字将监听所有本地IP地址。