当前位置: 首页 > wzjs >正文

福建省百川建设发展有限公司网站广州网站建设服务

福建省百川建设发展有限公司网站,广州网站建设服务,有哪些线上做酒店的网站,企业网站搭建价格故事场景:两种不同的远程沟通方式假设你需要和远方的朋友沟通一件重要的事情。方式一:TCP — 打一个重要的电话打电话是一种非常严谨、可靠的沟通方式。• 1. 建立连接 (三次握手):• 你拿起电话,拨号(SYN)。• 朋友那…

图片

故事场景:两种不同的远程沟通方式

假设你需要和远方的朋友沟通一件重要的事情。

方式一:TCP — 打一个重要的电话

打电话是一种非常严谨、可靠的沟通方式。

  • • 1. 建立连接 (三次握手):

    • • 你拿起电话,拨号(SYN)。

    • • 朋友那边电话铃响,他拿起电话说“喂?”(SYN-ACK)。

    • • 你听到他的声音后,说“是我,能听清吗?”(ACK)。

    • • 至此,一条清晰、稳定、双向的通话线路建立完成

    • 图片

  • • 2. 可靠传输 (确认与重传):

    • • 你说一句话,会下意识地等朋友“嗯”一声作为确认。如果他没反应,你可能会问“你还在听吗?我刚才说……”,然后把刚才的话重说一遍

    • • 你说的话很长,你会把它分成几句,并按逻辑顺序说。朋友那边也会按你说的顺序理解。TCP保证了数据的完整有序

    • 图片

  • • 3. 断开连接 (四次挥手):

    • • 聊完后,你说“那我挂了啊”,朋友说“好的,再见”,然后双方挂断电话,礼貌地结束通话

    • 图片

  • • 性格总结: TCP 就像一个严谨、负责、有点啰嗦的管家。他必须确保每一个信息都被对方准确无误地、按顺序地接收到。虽然准备工作和确认过程有点慢,但绝对可靠。

方式二:UDP — 寄一张随意的明信片

寄明信片是一种非常简单、快捷,但不太可靠的沟通方式。

  • • 1. 无连接:

    • • 你写好一张明信片,填上地址,直接往邮筒里一扔,你的任务就结束了。你根本不需要提前确认朋友在不在家,或者他家的邮筒是不是好的。

    • 图片

  • • 2. 不可靠传输:

    • • 这张明信片在路上可能会丢失,可能会被大雨淋湿字迹(数据损坏),你对此一无所知。

    • • 如果你连续寄了三张明信片,它们可能会因为不同的邮路,导致到达顺序和你寄出的顺序不一致。朋友可能先收到第三张,再收到第一张。

    • • 你完全不会收到任何“已收到”的回执

    • 图片

  • • 性格总结: UDP 就像一个追求速度、心很大的快递小哥。他的任务就是用最快的速度把包裹扔出去,不打包票、不要求签收、不负责售后。虽然快,但可能会丢件或送错顺序。

  • 图片

故事总结:

特性

TCP (打电话)UDP (寄明信片)
是否连接

✅ 面向连接 (必须先“拨号”建立通话)

❌ 无连接 (直接“扔邮筒”)

是否可靠

✅ 可靠 (有确认、有重传,保证送达)

❌ 不可靠 (尽力而为,可能丢失)

是否有序

✅ 有序 (保证信息按顺序到达)

❌ 无序 (可能先到后发)

速度

 (准备工作和确认机制有开销)

 (没有额外开销,只管发送)

核心比喻打电话寄明信片
应用场景要求绝对可靠

:网页浏览(HTTP)、文件传输(FTP)、电子邮件(SMTP)

追求速度,能容忍少量丢失

:在线游戏、视频直播、语音通话(VoIP)

如何选择?

  • • 当你发送的每一个字节都至关重要,绝不能出错或丢失时(比如网页、邮件、代码文件),选择 TCP

  • • 当你追求实时性,速度远比偶尔丢失一两个数据包更重要时(比如直播画面卡一下、游戏里一个位置信息更新慢了半拍),选择 UDP

第一步:核心代码

要完整实现这两种协议的通信,代码会比较长。因此,我们这里只展示它们在编程范式上最核心、最能体现差异的“骨架”代码。

1. TCP - 面向连接、可靠的信使

TCP的编程模式,就像是先建立一条专属的电话线,然后才能开始通话。

// TCP Server - Conceptual Code
// 1. 开一家“总机”(ServerSocket),在特定端口上监听来电
ServerSocketserverSocket=newServerSocket(8080);
System.out.println("TCP 服务端:正在等待客户来电...");// 2. 接听电话(accept),这是一个阻塞操作,会一直等到有人打进来
//    一旦接听,就建立了一个专属的通话线路(Socket)
SocketclientSocket= serverSocket.accept(); 
System.out.println("TCP 服务端:电话接通!可以开始通话了。");// 3. 在这个专属线路上进行可靠的读写
InputStreaminput= clientSocket.getInputStream();
OutputStreamoutput= clientSocket.getOutputStream();
output.write("你好,这里是客服中心。".getBytes());
intdata= input.read(); // 读取对方发来的信息
// ...// 4. 通话结束,挂断电话
clientSocket.close();
serverSocket.close();// TCP Client - Conceptual Code
// 1. 拿出电话(Socket),拨打总机的号码(IP和端口)
Socketsocket=newSocket("localhost", 8080);
System.out.println("TCP 客户端:电话已拨通,连接成功!");// 2. 在这个专属线路上进行可靠的读写
OutputStreamclientOutput= socket.getOutputStream();
InputStreamclientInput= socket.getInputStream();
clientOutput.write("我想咨询一个问题。".getBytes());
intresponse= clientInput.read(); // 读取对方的回应
// ...// 3. 挂断电话
socket.close();

2. UDP - 无连接、尽力而为的信使

UDP的编程模式,就像是不断地往一个公共邮箱里寄送明信片,每张明信片都得写清楚收件人地址。

// UDP Sender - Conceptual Code
// 1. 找一个“邮筒”(DatagramSocket)来寄信
DatagramSocketsocket=newDatagramSocket();
Stringmessage="紧急通知,下午三点开会!";
byte[] buffer = message.getBytes();// 2. 写一张“明信片”(DatagramPacket),填上内容、收件人地址和端口
InetAddressaddress= InetAddress.getByName("localhost");
DatagramPacketpacket=newDatagramPacket(buffer, buffer.length, address, 9090);// 3. 把明信片扔进邮筒,任务完成!不关心对方是否收到
System.out.println("UDP 发送方:已将通知明信片发出。");
socket.send(packet);// 4. 关闭邮筒
socket.close();// UDP Receiver - Conceptual Code
// 1. 在指定的“信箱”(端口)旁边准备一个“篮子”(DatagramSocket)收信
DatagramSocketsocket=newDatagramSocket(9090);
byte[] buffer = newbyte[1024];// 2. 准备一张空白的“明信片”(DatagramPacket)来装信
DatagramPacketpacket=newDatagramPacket(buffer, buffer.length);// 3. 等待信件投递,这是一个阻塞操作
System.out.println("UDP 接收方:正在等待接收明信片...");
socket.receive(packet); // 会一直等到有明信片进来// 4. 收到信后,拆开看看
StringreceivedMessage=newString(packet.getData(), 0, packet.getLength());
System.out.println("UDP 接收方:收到通知:" + receivedMessage);// 5. 关闭信箱
socket.close();
http://www.dtcms.com/wzjs/824850.html

相关文章:

  • 做旅游网站的设计感想网站统计系统 怎么做
  • 做网站该注意哪些基本要素昌大建设集团地址
  • 请问哪个网站可以做当地向导公众号开发图片太大上传怎么压缩图片
  • 成都市建设网站公司怎么做这个购物网站
  • ps做网站首页的尺寸做企业网站都有什么平台
  • 杭州微信建站广东省网站备案注销
  • 惠州网站制作策划个人网页设计说明书的设计目的
  • 用旧技术做网站能过毕设么知乎php怎么做网站后台
  • 建网站那家好自己做的网站加载慢
  • 泰安市违法建设网站做类似于彩票的网站犯法吗
  • 现在一般做网站都是去哪家做的it外包一个人可以赚多少
  • 爱站小工具计算器郑州政策最新消息
  • 网站建设套餐报价方案卖产品的网站怎么做
  • 怎么查看wordpresswordpress代码seo
  • 一个服务器可以做两个网站吗莆田建站培训
  • 贷款 东莞网站建设互联网网站运营
  • 太原论坛网站开发公司网件路由器设置
  • 网站建设浙江公司小程序代理模板
  • windows系统做网站长春好的做网站公司排名
  • 网站建设电话着么打《设计》韩国
  • 行政机关单位网站建设北京管庄网站建设公司
  • 大石桥网站建设公众号多少钱
  • 优秀网站建设哪个公司好如何建立公司网站意味着什么
  • 载带 东莞网站建设排版的网站
  • 申请免费个人网站空间网络推广渠道
  • 新鸿儒网站宝安网站设计
  • 静态网站生成器怎样做腾讯建站官网
  • 都芳漆中文网站建设遵义app开发公司排名
  • 网络营销导向的网站建设阿坝州住房和城乡建设厅网站
  • 网站地图样本阿里云服务器租用