【代码练习7】UPD协议传输练习
2017-12-20 17:25
218 查看
UDP协议
User Datagram Protocol,缩写为UDP,又称用户数据报文协议,是一个简单的面向数据报的传输层协议。UDP只提供数据的不可靠传递,它一旦把应用程序发给网络层的数据发送出去,就不保留数据备份(所以UDP有时候也被认为是不可靠的数据报协议)。
UDP在IP数据报的头部仅仅加入了复用和数据校验(字段)。由于缺乏可靠性且属于非连接导向协议,UDP应用一般必须允许一定量的丢包、出错。流媒体(流技术)、即时多媒体游戏和IP电话(VoIP)一定就是典型的UDP应用。如果某个应用需要很高的可靠性,那么可以用传输控制协议(TCP协议)来代替UDP。
1. 发送端代码
import java.net.*; //发送端 public class UDPSenderTest { public static void main(String[] args) throws Exception { //先创建套接字本地地址 InetSocketAddress addr = new InetSocketAddress("localhost",8888); //将该地址绑定到套接字 DatagramSocket socket = new DatagramSocket(addr); for (int i = 1;;i++){ //创建要发送的字符串数组 byte[] buf = ("你好,在吗? +" + i).getBytes(); InetSocketAddress receiverAddr = new InetSocketAddress("localhost",9999); //创建该字符数组的数据报报包,并指定目标地址和目标端口 DatagramPacket packet = new DatagramPacket(buf,0,buf.length,receiverAddr); //从socket套接字发送packet数据报包 socket.send(packet); Thread.sleep(1000);//Thread类继承java.lang.Object,可以直接调用sleep()方法。 } } }
2.接受端代码
import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; //接收端 public class UPDReceiverTest { public static void main(String[] args) throws Exception { //先创建一个本地端套接字地址,并指定端口号 InetSocketAddress addr = new InetSocketAddress("localhost",9999); //将本地地址绑定到套接字 DatagramSocket socket = new DatagramSocket(addr); //死循环来侦听接收数据报包 for (;;){ //创建一个缓冲区字节数组,因为构造DatagramPacket,需要传入字节数组 byte[] buf = new byte[1024]; //构造数据报包,用来接收长度为 length 的包,在缓冲区中指定偏移量为0。 DatagramPacket packet = new DatagramPacket(buf ,0, buf.length); //从socket套接字接收数据报包。 socket.receive(packet); //获取数据包写入字节的长度 /*(一开始还纠结len为何不是缓冲区长度,查看API--DatagramPacket类下的getLength()方法 摘要“返回将要发送或接收到的数据的长度。”也就是说getLength自动返回缓冲区实际接收到的数据长度)*/ int len = packet.getLength(); //打印在控制台 System.out.println(new String(buf, 0, len)); } } }
相关文章推荐
- librtmp实时消息传输协议(RTMP)库代码浅析
- 【代码练习5】使用套接字实现客户端和服务器的数据传输
- 【代码练习8】UDP协议实现局域网屏幕广播功能
- php模拟飞鸽传输协议,代码实现向飞鸽发送消息
- librtmp实时消息传输协议(RTMP)库代码浅析
- 通信协议之异步传输、同步传输的区别
- spark机器学习练习代码
- 我有个简单网络传输加密的想法,但不会实现,请高手给出代码
- ] JAVA最强实战班新一期课程 13个实战模块 达内JAVA培训TTS9.0 课件+练习+代码
- Bootstrap 练习代码暂存
- 黑马程序员--ios基础--oc-foundation--NSString,NSArray与计算代码行数的练习
- WCF标准绑定以及传输协议与编码格式
- TCP 传输层协议的介绍
- Java Socket实战之五 使用加密协议传输对象
- Java socket 分析1--Socket说明与传输协议
- linux网络协议栈(六)传输层 (3)UDP协议 3)报文发送 send/sendto/sendmsg
- JQuery 小练习(实例代码)
- TLS 协议所定义的严重错误代码是 10。Windows SChannel 错误状态是 1203
- 好用的python代码练习工具jupyter-notebook安装及使用
- Mina 2 编码解码协议 及 已经实现通信的完整代码