我正在开发一个旨在跨越随机系统移植的项目,并拥有一台服务器"使用ServerSocket
在一台计算机上托管的类型程序,以及另一台"客户端"另一台连接到该服务器的计算机上的程序"在同一网络上,使用socket
。我希望客户端总是弄清楚服务器在网络上的位置,而不必在其他地方使用多播系统或托管系统,使其全部在本地。我的印象是我能够在特定的IP地址上托管ServerSocket
,我在这里尝试过:
try {
InetAddress addr = InetAddress.getByName("192.168.859.672");
serverSocket = new ServerSocket(Integer.parseInt("9532"), 50, addr);
} catch (Exception e) {
e.printStackTrace();
}
但是返回错误
java.net.UnknownHostException: 192.168.859.672
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(InetAddress.java:901)
at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1293)
at java.net.InetAddress.getAllByName0(InetAddress.java:1246)
at java.net.InetAddress.getAllByName(InetAddress.java:1162)
at java.net.InetAddress.getAllByName(InetAddress.java:1098)
at java.net.InetAddress.getByName(InetAddress.java:1048)
at com.pulsepanda.dragon.core.Connection.startServer(Connection.java:30)
at com.pulsepanda.dragon.core.Connection.<init>(Connection.java:25)
at com.pulsepanda.dragon.core.Run.main(Run.java:5)
如果这是一种让它工作的方法,让ServerSocket
托管在特定的IP地址上,我做错了什么?如果这不是一种有效的做事方式,我有两个问题:我可以在没有多播系统的情况下在本地做什么,2)我实际使用的是什么?
谢谢!
答案 0 :(得分:0)
执行此操作的方法是使用DNS。服务器的每个实例都可以具有相同的非限定主机名。本地DNS服务器会将您转换为该服务器的IP地址。
答案 1 :(得分:0)
如果是想要摆脱的UnknownHostException,那将是通过分配有效的IP地址。 示例如下:
addr = InetAddress.getByName("192.168.85.67");
有关格式的详细信息,请参阅Javadocs。
答案 2 :(得分:0)
192.168.859.672
不是有效的IP地址。元素必须在0..255范围内。
IP地址必须是运行服务器的主机的本地IP地址。
Integer.parseInt("9532")
只是一种无意义的迂回写作方式9532
。
答案 3 :(得分:0)
更改您的主机文件 的/ etc /主机
添加以下行
127.0.1.1 192.168.859.672