通过java程序实现网络之间的数据传输 底层基于网络来传输的流
网路模型
IP地址:确定再网络中的位置 ipv4 由4位0-255之间的数组成的--192.168.0.1 ipv6
端口:计算机和外部进行数据交互的媒介---端口号(0-65535) 0-1024这些端口号大部分被
我们的系统占用了,自己使用端口号的时候就是从1025往后走
域名:给ip取得好记的名称 通过DNS中央解析器可以映射到对应的IP
UDP: 底层基于流,底层是通过数据包来进行数据的传输,数据包大小一般不能超过64kb。不会建立连接(不检测连接状态,不检测传输东西是否有用),所以对我们来说
传输数据不可靠,但是传输速度快。使用场景 :视频聊天
扫描二维码关注公众号,回复:
6878727 查看本文章
创建UDP数据连接采用的类是 DatagramSocket(实现类) Datagrampacket(数据包类)
发送端:
1.创建套接字对象
2.创建需要发送的数据包(指定要发送的数据长度以及ip地址和端口号)
3.发送数据包
4.关流
public class UDPSenderDemo { public static void main(String[] args) throws IOException { //UDP传输的发送端 //创建套接字的对象 -------指定要传输的IP和端口 DatagramSocket ds=new DatagramSocket(); //创建一个待传输的数据包 //因为是通过数据包传输的,所以IP地址我只要给数据包指定就好 //第一个参数是用传输的数据的字节数组 //第二个参数真正要发送的数据长度(最大和byte数组长度一致) //第三个参数指明要传输的IP地址和端口 DatagramPacket dp=new DatagramPacket("你好".getBytes(), "你好".getBytes().length,new InetSocketAddress("127.0.0.1", 8009)); //发送数据包 ds.send(dp); //关流 -----底层字节流 ds.close(); } }
接收端
1.创建套接字对象(绑定具体的端口号)
2.创建需要接收的数据包(指定真实接收数据的长度)
3.接收数据包
4.关流
5.解析数据包
public class UDPReceiverDemo { public static void main(String[] args) throws IOException { //创建接收端套接字对象 //接收端的套接字的话就是要采用含端口的构造方法,因为不管什么IP地址发送给我数据,我都是通过端口来交互数据 DatagramSocket ds=new DatagramSocket(8009); //创建数据包用于接收数据 //第二个参数代表实际接收数据的长度,可以设置的小一点 DatagramPacket dp=new DatagramPacket(new byte[1024], 1024); //接收数据把数据放置在数据包中 ds.receive(dp); //关流 ds.close(); //解析数据包 //dp.getData() --获取数据---字节数组 //dp.getLength()--获取数据的长度 System.out.println(new String(dp.getData(),0,dp.getLength())); //获取IP地址和端口 System.out.println(dp.getAddress()); System.out.println(dp.getPort()); //先开启接收端 //后开启发送端 } }