`
人生难得糊涂
  • 浏览: 114970 次
社区版块
存档分类
最新评论

UDP-DattagramSocket构造方法的真实作用

 
阅读更多

之前对DatagramSocket的构造方法DatagramSocket(int port,InetAddress laddr)是何意思一直不太清楚。第一个参数port是指定本地端口,但laddr是什么意思呢?

今天查了点资料终于明白

DatagramSocket(int port,InetAddress laddr):创建数据报套接字,将其绑定到指定的本地地址。即指定网卡发送和接收数据。如果在创建DatagramSocket对象时,没有指定网卡的IP地址,在发送数据时,底层驱动程序会自动旋转一块网卡去发送,在接收数据时,会接收索引的网卡收到的与端口一致的数据。

在网上很多程序中我看到常常这样调用上面的构造方法.

DatagramSocket udpSocket=DatagramSocket(9090,InetAddress.getLocalHost());

而需要说明的是,使用getLocalHost方法未必真的能够获取您想要的本机的IP地址(有人说,在windows上getLocalHost可以正确执行,获取到本机的IPV4地址,而在Linux上调用getLocalHost返回的是一个127.0.0.1的ip地址)。现在假想有一台主机有多张网卡,而且有多个IP地址,甚至这台主机即配置了IPV4又配置了IPV6,调用getLocalHost将会返回哪一个IP地址?很明显getLocalHost只能返回一个IP地址,因此就限定了getLocalHost方法并不是获取本机IP地址的最好方式。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics