为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

喵喵时光机 2019-03-21 18:15:00
首先是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却又那么简单。这是为什么?我觉得可能是协议问题,看来最近得补补基础了。
查看完整描述

5 回答

?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

因为TCP是基于流,而UDP是基于报文啊。


查看完整回答
反对 回复 2019-04-17
?
人到中年有点甜

TA贡献1895条经验 获得超7个赞

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


查看完整回答
反对 回复 2019-04-17
?
呼唤远方

TA贡献1856条经验 获得超11个赞

UDP的简洁是牺牲了准确以换取高效


查看完整回答
反对 回复 2019-04-17
?
FFIVE

TA贡献1797条经验 获得超6个赞

一句话解释,TCP是要保证数据的正确性,而UDP是不保证数据的正确到达的,包丢了就丢了,适用于突发性场景,不适合于要求数据准确性的场景


查看完整回答
反对 回复 2019-04-17
  • 5 回答
  • 0 关注
  • 945 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号