问答详情
源自:3-5 使用多线程实现多客户端的通信

为什么通过getHostAddress()和getHostName()得到都是IP地址,后者为什么不是主机名?而且在服务器端是怎样的运行顺序?

如图,为什么通过getHostName()得到的不是客户端的主机名?而是IP地址?

http://img.mukewang.com/58e1b876000106cf08560064.jpg

http://img.mukewang.com/58e1b8760001779b02240035.jpg

而且在服务器端是先调用了serverSocket类的start()方法,为什么在控制台中最后输出serverSocket中输出的语句?

serverThread.start();
//统计连接过服务器的数量
System.out.println("客户端的数量:" + (++count));
//获取客户端的IP地址和主机名
System.out.println("当前客户端的IP地址:" + socket.getInetAddress().getHostAddress() 
	+ "\n当前客户端的主机名: " + socket.getInetAddress().getHostName());

输出是:

客户端的数量:1

当前客户端的IP地址:127.0.0.1

当前客户端的主机名: 127.0.0.1

我是服务器,客户端说: 用户名:ala;密码:12789

方法的执行先后顺序为什么是这样的?

提问者:蔚然成麟er 2017-04-03 10:53

个回答

  • 慕少7573967
    2017-09-28 16:17:39

    因为网络通信过程中客户端的主机名是不会带到服务器端的。。第二,你没学过多线程吗,不知道主线程和调用的线程是交替进行的吗,都是独立进行的。

  • Mark_1992
    2017-04-03 14:32:41

    方法顺序没看出来哪儿有疑问。hostname此处就是ip地址