likes
comments
collection
share

网络编程--网络通信协议(api)

作者站长头像
站长
· 阅读数 4

网络编程--网络通信协议(api)

传输层的2个常见协议

1、TCP(Transmission Control Protocol):传输控制协议 2、UDP(User Datagram Protocol):用户数据协议

Tcp协议的特点

1、使用TCP协议,必须双方先建立连接,他是一种面向连接的可靠通信协议

2、传输前,采用”三次握手“方式建立连接,所以是可靠的

3、在连接种可进行大数据的传输

4、连接、发送数据都需要确认,且传输完毕后,还需释已建立的连接,通信效率较低

TCP协议通信场景

对信息安全要求较高的场景例如:文件下载,金融等数据通信

TCP三次握手确立连接

网络编程--网络通信协议(api)

四次挥手断开连接

网络编程--网络通信协议(api)

UDP协议:

1、UDP是一种无连接,不可靠传输的协议

2、将数据IP,目的地IP和端口封装成数据包,不需要建立连接

3、每个数据包的大小限制在64KB内

4、发送不管对方是否准备好,接收方收到也不确认,固不可靠

5、可以广播发送,发送数据结束时无需释放资源,开销小,速度快

UDP的使用场景

语言通话,视频会话等

DatagramSocket:发送端和接收端对象

网络编程--网络通信协议(api)

DatagramPacket:数据包对象

网络编程--网络通信协议(api)

public class FileDemo {

    public static void main(String[] args) throws Exception {
        DatagramSocket socket = new DatagramSocket(6666);//创建发送端对象,参数可以自定义端口号
        byte[] bytes = "你在干啥".getBytes(); //将要发送的数据转换成byte数组
        //创建发送端数据包对象
        DatagramPacket packet = new DatagramPacket(bytes,bytes.length, InetAddress.getLocalHost(),8888);
        /**
         * 参数一:发送数据的byte(字节)数组
         * 参数二:发送数据的内容长度
         * 参数三:接收端的IP地址对象
         * 参数四:接受端的端口号
         */
        socket.send(packet);//发送数据包
        socket.close();//关闭发送端对象
    }
}

class Account1 {
    public static void main(String[] args) throws Exception {
        DatagramSocket socket = new DatagramSocket(8888);//创建接收端对象
        byte[] bytes = new byte[1024 * 64];//定义byte数组收数据
        DatagramPacket packet = new DatagramPacket(bytes,bytes.length);//创建接收端数据包对象
        /**
         * 参数一:接收数据的byte(字节)数组
         * 参数二:接收数据的长度
         */
        socket.receive(packet);//等待接收数据包
        int len = packet.getLength();//获取接收到数据的长度
        String sr = new String(bytes,0,len);//解析数据
        System.out.println(sr);


        System.out.println(packet.getSocketAddress());//获取发送端的IP地址和端口号
        System.out.println(packet.getPort());//获取发送端的端口号
        socket.close();//关闭接收端对象
    }
}