网络通信 TCP UDP

编程入门 行业动态 更新时间:2024-10-27 17:18:12

<a href=https://www.elefans.com/category/jswz/34/1769240.html style=网络通信 TCP UDP"/>

网络通信 TCP UDP

1.TCP  UDP简介 

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议。两台计算机可以把数据当做一个双向字节流进行交换。(IP协议是一种网络层协议,规定每个互联网上的计算机只能有一个唯一的ip地址)

UDP协议全称是用户数据报协议,在网络中它与TCP协议一样用于处理数据包,是一种无连接的协议。

两者区别:

 1.基于连接与无连接,TCP相当于打电话,UDP相当于发短信
  2.TCP要求系统资源较多,UDP较少; 
  3.UDP程序结构较简单 
  4.流模式(TCP)与数据报模式(UDP); 
  5.TCP保证数据正确性,UDP可能丢包 
  6.TCP保证数据顺序,UDP不保证 

UDP应用场景:
  1.面向数据报方式
  2.网络数据大多为短消息 
  3.拥有大量Client
  4.对数据安全性无特殊要求
  5.网络负担非常重,但对响应速度要求高

2.TCP的连接建立与连接终止(三次握手与四次挥手)

1.TCP三次握手的过程如下:

 

  1. 客户端发送SYN(SEQ=x)报文给服务器端,进入SYN_SEND状态。

  2. 服务器端收到SYN报文,回应一个SYN (SEQ=y)ACK(ACK=x+1)报文,进入SYN_RECV状态。

  3. 客户端收到服务器端的SYN报文,回应一个ACK(ACK=y+1)报文,进入Established状态。

三次握手完成,TCP客户端和服务器端成功地建立连接,可以开始传输数据了。

至于为什么要三次握手??主要是传输的过程中数据可能丢失,需要一个反馈

2.四次挥手过程如下:

为什么连接需要三次,断开需要四次了呢?

第一种情况:服务端干完了 

而并不是服务器每次都能干完 都能断开

第二种情况:

客户端频繁地发消息,这样六次会话都没登断开

所以最终有了四次挥手

 

3.通信的代码实现(UDP)

//客户端
//准备要发送的信息
String msg="要发送的消息";
//创建套接字对象
DatagramSocket socket = new DatagramSocket();
//目标地址:电脑的IP地址
InetAddress host = InetAddress.getByName("192.168.*.*");
//指定包要发送的目的地
byte[]  data=msg.getBytes();
DatagramPacket request =new DatagramPacket(data,data.length, host, 9999);//9999为端口 自定义//发送
socket.send(request);//服务器端//创建套接字对象
DatagramSocket socket = new DatagramSocket(9999); //9999为端口 自定义
//创建接受的容器		
byte[]  data=new byte[10];DatagramPacket request = new DatagramPacket(data, 10);//接受消息while(true){socket.receive(request);//处理消息String s=new String(tong);System.out.println("收到消息: "+s);}

 

更多推荐

网络通信 TCP UDP

本文发布于:2023-07-28 18:12:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1271334.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:网络通信   TCP   UDP

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!