java InetAddress 的 getLocalHost 与 getByName 对于本机有什么区别?
我首先在服务端创建了一个serversocket ,
客户端与这个服务端连接后把一个随机生成的端口号和客户端的inetaddress.getlocalhost().toString()发给了服务端,
然后客户端利用这个端口号再创建一个serversocket,
服务端把收到的两项信息解析出来之后,创建一个socket去连接客户端创建的serversocket。。。
可是很神奇,如果服务端的socket我这样写:
Socket socket = new Socket(InetAddress.getByName(clientAddress),port); //从客户端解析出来的两个参数
jvm会抛异常
因为我是用的一台电脑做测试,如果把代码改成:
Socket socket = new Socket(InetAddress.getLocalHost(),port);
连接竟然能成功
更神奇的是 InetAddress.getByName(clientAddress),InetAddress.getLocalHost()这两个打印出来是一个东西,新手求指点。。。