UDP编程原理
来源:互联网 发布:电煮锅哪个牌子好 知乎 编辑:程序博客网 时间:2024/05/08 03:45
UDP
UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
UDP:主要学两个类:DatagramSocket DatagramPacket
DatagramSocket表示用来发送和接收数据报包的套接字,套接字就是两台机器之间通信的端点,数据报套接字是包投递服务的发送或接收点,就是寄快递和收快递的点。构造方法为:
DatagramSocket(int port) :创建数据报套接字并将其绑定到本地主机上的指定端口。
DatagramPacket此类表示数据报包,数据报包用来实现无连接包投递服务。也就是包着东西的快递盒子。构造方法:
DatagramPacket(byte[] buf, int length, SocketAddress address) :构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
DatagramPacket(byte[] buf, int length, InetAddress address, int port) :构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
- 客户端:
1) 创建客户端 DatagramSocket 类 + 指定的发送端口
2) 准备数据 以字节数组的形式
3) 打包 DatagramPacket+服务器端的地址和端口
4) 发送
5) 释放资源 - 服务器端
1) 创建服务端 DatagramSocket 类 + 指定的接收端口
2) 准备接收数据的容器 以字节数组的形式封装为DatagramPacket
3) 包 接收数据
4) 分析
5) 释放资源
import java.io.ByteArrayInputStream;import java.io.DataInputStream;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;/** * 2、服务器端 * 1) 创建服务端 DatagramSocket 类 + 指定的接收端口 * 2) 准备接收数据的容器 以字节数组的形式封装为DatagramPacket * 3) 包 接收数据 * 4) 分析 * 5) 释放资源 * @author Administrator * */public class MyServer { public static void main(String[] args) throws IOException { DatagramSocket sever = new DatagramSocket(8888); byte[] b = new byte[1024]; DatagramPacket data = new DatagramPacket(b, b.length); sever.receive(data);// System.out.println(new String(b,0,b.length)); System.out.println(convert(b)); sever.close(); } public static double convert(byte[] b) throws IOException{ ByteArrayInputStream s = new ByteArrayInputStream(b); DataInputStream dis = new DataInputStream(s); double num = dis.readDouble(); dis.close(); return num; }}
import java.io.ByteArrayOutputStream;import java.io.DataOutputStream;import java.io.IOException;import java.net.DatagramPacket;import java.net.DatagramSocket;import java.net.InetSocketAddress;/** * 1、客户端: * 1) 创建客户端 DatagramSocket 类 + 指定的发送端口 * 2) 准备数据 以字节数组的形式 * 3) 打包 DatagramPacket+服务器端的地址和端口 * 4) 发送 * 5) 释放资源 * @author Administrator * */public class MyClient { public static void main(String[] args) throws IOException { DatagramSocket client = new DatagramSocket(6666);// String msg = "lf is god!!";// byte[] b = msg.getBytes(); double num = 88.88; byte[] b = convert(num); DatagramPacket data = new DatagramPacket(b, b.length, new InetSocketAddress("127.0.0.1",8888)); client.send(data); client.close(); } public static byte[] convert(double num) throws IOException{ ByteArrayOutputStream s = new ByteArrayOutputStream(); DataOutputStream dos = new DataOutputStream(s); dos.writeDouble(num); dos.flush(); byte[] b = s.toByteArray(); dos.close(); return b; }}
阅读全文
0 0
- UDP编程原理
- Linux下Socket编程之UDP原理
- socket编程原理,TCP和UDP
- socket编程UDP服务器原理简介
- socket编程UDP客户端原理简介
- Linux C Socket编程原理及tcp, udp简单实例
- UDP编程
- UDP编程
- UDP编程
- UDP编程
- Udp编程
- UDP编程
- UDP编程
- UDP编程
- UDP编程
- UDP 编程
- udp编程
- Udp编程
- 实现对象的复用——享元模式(四)
- Educational Codeforces Round 32 F. Connecting Vertices
- win7 64位 安装MySQL5.7.20
- javamail发送邮件、下载邮件核心功能
- JavaScript深入之继承的多种方式和优缺点
- UDP编程原理
- A标签添加是否删除的事件
- 测试图片
- 热修复——深入浅出原理与实现
- js中的特殊数值——NaN,+0,-0,Infinity,undefined,null
- Hive分析窗口函数 LAG,LEAD,FIRST_VALUE,LAST_VALUE
- JAVA反射_注解
- OriginLab2017 去除水印demo
- update多表, Access与SQl的区别