您的位置:首页 > 理论基础 > 计算机网络

UDP和TCP的区别

2019-08-05 13:18 1116 查看

UDP协议
        User datagram protocol (用户数据报协议)
        特点: 1.数据打包,一个数据包最大64k. 
            2.发送数据, 不会确认接收方是否在线...  直接发送,如果接收方不再线? ,数据丢失 
            3.该协议是不可靠的,速度快...  
            不面向连接,不可靠,速度快. 
        应用场景: 屏幕广播,视频会议, 视频...  
            凌波: udp ... 
            广播软件... 没有升级... xp 非常好用... 
            广播地址: 255... 
        udp 不能保证数据的可靠性,不适合进行文件的的传输... (文本,图片,.... )

TCP 协议
        Transmission control protocol (传输控制协议)
        特点: 1.使用该协议,进行数据通信时,通过3次握手,建立连接通道.
             2.发送数据前,先确认接收方是否在线. 
             3.该协议是可靠的, 速度稍慢...
            面向连接,可靠,速度稍低.

java 中支持UDP协议的类
        java 支持UDP 协议. 
        类: 
            DatagramPacket 
                表示数据报包
                构造函数: 
                    DatagramPacket(byte[] buf, int length) 
                          构造 DatagramPacket,用来接收长度为 length 的数据包。-> 该构造函数,可以创建数据报包对象,该对象是作用接收数据
                    DatagramPacket(byte[] buf, int length, InetAddress address, int port) 
                              构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。  ->该构造函数,可以创建数据报包对象,该对象用于 发送数据的.  
            DatagramSocket
                用于发送和接收数据报包. 
                    发送数据报包
                        send(DatagramPacket p);
                    接收数据报包
                        receive(DatagramPacket p); 

java中支持tcp 相关的类. 
            Socket 是 TCP 客户端 API,通常用于连接远程主机。 
            ServerSocket 是 TCP 服务器 API,通常接受源于客户端套接字的连接。
        java tcp 基于  c/s模式的.
            C->Client  客户端
            S->Server  服务器... 
            网络应用程序典型:  游戏... cf    网络... 
 

tcp服务端编程:

public class Server {
    public static void main(String[] args) throws IOException {
        System.out.println("启动tcp 服务端");
        // 1. 创建ServerSocket.
        ServerSocket server = new ServerSocket(5000);

        // 2. ServerSocket. 去等待客户端的连接.
        // 2.1 只要客户端连接到了服务端, accept 方法,创建出一个新的socket ,用于和客户端的socket 进行数据的传入...
        Socket socket = server.accept();

        // 3. 获取服务端socket 的输入流.
        InputStream in = socket.getInputStream();

        byte[] buffer = new byte[1024];
        // 4. 读取客户端发送的信息.
        int len = in.read(buffer);

        // 5. 解码信息.
        System.out.println(new String(buffer, 0, len));

        // 6. 关闭socket.
        socket.close();
        server.close();

    }
}
tcp客户端编程:

public class ClientDemo1 {
    public static void main(String[] args) throws UnknownHostException, IOException {
        // 1. tcp 客户端.
        System.out.println("tcp 客户端启动");
        // 2.创建Socket 对象.
        Socket socket = new Socket("192.168.33.177", 5000);

        // 3. 客户端向服务端发送信息...
        // 3.1 获取客户端的输出流.
        OutputStream out = socket.getOutputStream();

        // 4. 发送数据.
        out.write("hello".getBytes());

        // 5. 关闭socket
        socket.close();
    }
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: