如何查询远程计算机的名称,如何解析远程计算机名称以获取它在java中的IP地址...

我正在尝试提供一个程序,将计算机从A发送到计算机B。两台计算机都必须有我的java程序的副本。这需要在JTextField对象中输入远程计算机B的名称,在JTextArea对象中输入消息,然后单击按钮发送。

我的程序应该能够将给定的计算机名解析为ip地址,以便将IP地址作为参数包含在我的DatagramPacket构造函数中。

我尝试使用以下方法进行解析,但我得到javax.naming.CommunicationException。

String clientname="user";

Hashtable env=new Hashtable();

env.put(Context.INITIAL_CONTEXT_FACTORY, "com.sun.jndi.dns.DnsContextFactory");

env.put(Context.PROVIDER_URL,"dns://www.google.com");

DirContext con=new InitialDirContext(env);

Object obj=con.lookup("clientname");

抛出异常

javax.naming.CommunicationException: DNS error [Root exception is java.net.SocketTimeoutException: Receive timed out]; remaining name 'user'

at com.sun.jndi.dns.DnsClient.query(DnsClient.java:300)

at com.sun.jndi.dns.Resolver.query(Resolver.java:81)

at com.sun.jndi.dns.DnsContext.c_lookup(DnsContext.java:286)

at com.sun.jndi.toolkit.ctx.ComponentContext.p_lookup(ComponentContext.java:544)

at com.sun.jndi.toolkit.ctx.PartialCompositeContext.lookup(PartialCompositeContext.java:177)

at com.sun.jndi.toolkit.ctx.PartialCompositeContext.lookup(PartialCompositeContext.java:166)

at javax.naming.InitialContext.lookup(InitialContext.java:411)

Caused by: java.net.SocketTimeoutException: Receive timed out

at java.net.DualStackPlainDatagramSocketImpl.socketReceiveOrPeekData(Native Method)

at java.net.DualStackPlainDatagramSocketImpl.receive0(DualStackPlainDatagramSocketImpl.java:121)

at java.net.AbstractPlainDatagramSocketImpl.receive(AbstractPlainDatagramSocketImpl.java:145)

at java.net.DatagramSocket.receive(DatagramSocket.java:786)

at com.sun.jndi.dns.DnsClient.doUdpQuery(DnsClient.java:411)

at com.sun.jndi.dns.DnsClient.query(DnsClient.java:203)

... 7 more

问题

我怎样才能实现我的目标因为在我看来,java DNS服务提供商似乎只能解析域名而不是个人计算机名称?我一直在努力奋斗3天。

感谢任何帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值