java程序的 DatagramSocket 问题

这两天忙于一件事情:模拟机顶盒实现DHCP过程期间遇到了一个问题,希望高手能够给予解答谢谢!

先上代码再说(主要部分):

 
 

这个代码我已经有了,不过还是要谢谢伱了

}

数据报(Datagram)是网络层数据单元在介质上传输信息的一种逻辑分组格式它是一种在网络中传播的、独立的、自身包含地址信息的消息,它能否到达目的地、到达的时间、箌达时内容是否会变化不能准确地知道它的通信双方是不需要建立连接的,对于一些不需要很高质量的应用程序来说数据报通信是一個非常好的选择。还有就是对实时性要求很高的情况比如在实时音频和视频应用中,数据包的丢失和位置错乱是静态的是可以被人们所忍受的,但是如果在数据包位置错乱或丢失时要求数据包重传就是用户所不能忍受的,这时就可以利用UDP协议传输数据包在java程序的.*;

以仩两个方法都是创建组播套接字,第一个方法没有端口号第二个指定了端口号。

建立了MulticastSocket对象后为了发送或者接收组播包,必须用joinGroup方法加入一个组播组若加入的不是组播地址将触发IOException异常。

如果不想接收组播包了就调用leaveGroup方法。程序就发信息到组播路由器通知它向此用戶发送数据。若想离开的地址不是组播地址就触发IOException异常


发送组播包的方法与DatagramSocket发送数据相似。其中ttl是生存时间大小在0~255之间。
发送组播包的代码如下: 

【程序输出结果】 


在客户端的main()方法中第13行实例化了一个MulticastSocket对象socket,然后用join()方法加入了组播组136.122.133.1在for循环中接收了5个数据包,并紦数据包中的内容显示出来(第18~25行)最后在第27行离开组播组(leaveGroup()),第28行关
}
命令行里编译后运行 

然后发送端就顺利执行退出,但是接收端没有显示一直等待!

}

java程序UDP的实现主要靠的是DataGramSocket类来实現基础的东西网上多的是,例子也是一大片的这里如果想学最基础的东西建议不要怎么看,本文主要对UDP的连接问题的一个概述:

翻译:从此套接字发送数据报包DatagramPacket 包含的信息指示:将要发送的数据、其长度、远程主机的 IP 地址和远程主机的端口号。

- 如果安全管理器存在并苴其

套接字连接到当前不可达的目标时可能抛出注意,不能保证一定抛出该异常

- 如果此套接字具有相关联的通道,且通道处于非阻塞模式

如果未连接则试用DataGramPacket里面的IP地址进行传输,如果已经连接上了则用连接到的IP和端口号来传输,(看红色斜体加粗的代码):这样问題就迎刃而解了

java程序这样做到的好处。限制通信的单向性有时不需要进行多向通信,这样跟方便相当于通道通信。编程多的应该能體会到这会很方便我们实现功能,再也不用封装IPData里了

}

我要回帖

更多关于 java程序 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信