java InetAddress 的 getLocalHost 与 getByName 对于本机有什么区别?

Wills_AceKiller 2014-08-22 04:34:40
我首先在服务端创建了一个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()这两个打印出来是一个东西,新手求指点。。。
...全文
268 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
MiceRice 2014-08-23
  • 打赏
  • 举报
回复
要看看异常信息是什么,才知道是啥错误。 另外非常怀疑你最后拿到的 clientAddress 是 127.0.0.1,这个是“本机地址”,差不多等同与 localhost 电脑可以有N个网络地址,尤其是当网络环境复杂或者你又有Wifi和虚拟机啥的情况下,所以这类设计和测试最好仔细和谨慎点。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧