网络通信 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);
		}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值