29(套接字)就是网络编程

通过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());
        //先开启接收端
        //后开启发送端

    }

}

猜你喜欢

转载自www.cnblogs.com/xuwangqi/p/11255047.html