开发者社区> 问答> 正文

为什么TCP发送数据要经过字节流、打印流?而UDP发送竟然如此的简单?

首先是TCP的客户端的代码:

//1.创建客户端Socket,指定服务器端地址和端口
        Socket socket = new Socket("localhost",8888);
        //2.获取输出流,向服务器端发送信息
         OutputStream os = socket.getOutputStream();//字节输出流
         PrintWriter pw = new PrintWriter(os);//将输出流包装为打印流
         pw.write("用户名:admin;密码:453");
         pw.flush();//刷新缓存,向服务器端输出
         socket.shutdownOutput();

然后是UDP的客户端的代码:

    //1.定义服务器的地址、端口号、数据
    InetAddress address = InetAddress.getByName("localhost");
    int port=8000;
    byte[] data = "用户名:admin;密码:123".getBytes();
    //2.创建数据报,包含发送的数据信息
    DatagramPacket packet=new DatagramPacket(data,data.length,address,port);
    //3.创建DatagramSocket对象
    DatagramSocket socket =new DatagramSocket();
    //4.向服务器端发送数据报
    socket.send(packet);

这里的客户端向本地服务器发送一些数据。令我无法理解的是为什么TCP如此复杂?获取输出流,包装打印流,还要刷新一次缓存。相比之下UDP却又那么简单。
这是为什么?

展开
收起
蛮大人123 2016-03-11 18:53:00 2751 0
1 条回答
写回答
取消 提交回答
  • 我说我不帅他们就打我,还说我虚伪

    TCP建立数据交互需要经过三次握手,这样就能包装交互的数据是可靠的安全的。而UDP建立的数据交互却是不需要和TCP那样要在客户端和服务器端之间简历数据交互,而是服务器直接把数据分成很多很多小的数据包,丢给客户端,这样的话,数据是不可靠不安全的,但是数据发送的快。而使用UDP传输的数据比如视频音频数据,这些数据大部分是不需要太高的安全性和可靠性,却需要速度,所以一般就会用UDP传输。

    2019-07-17 18:59:55
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
TCP Cluster for mqtt技术实施方案 立即下载
低代码开发师(初级)实战教程 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载