TCP/IP协议和UDP协议的区别以及它们是如何实现通信的

一、TCP/IP协议
传输控制协议,是一个安全可靠的互联网协议,需要通信的主机之间需要先建立正确的链接,才能够进行通信,并且改协议能够保证数据传输稳定性(必须的保证信息发送到一台主机,由该主机确认之后才能发送下一条信息),另外该协议也能保证数据传输的有序性(先发送的信息一定先到达)。一般基于C/S架构,存在服务器客户端模式。

应用领域: 语音通话,视频会议
通信:Socket(套接字),实际上就是由IP地址跟端口号的结合,通过Socket对象可以实现两台主机之间的通信;Socket分为服务端Socket(java.net.ServerSocket),以及客户端Socket(java.net.Socket)

二、UDP协议
User Diagram Protocol(用户数据报协议),是一个不安全的网络协议,不需要双方之间建立联系,也不保证信息传输的有序性(有可能后发消息先到),传输效率比TCP/IP更高.没有专门服务器和客户端,只有发送端和接收端
通信

/**
 * 发送方
 * @author mrchai
 *
 */
public class Sender {

    public static void main(String[] args) throws IOException {
        //创建一个数据报的网络通道(创建物流公司)
        DatagramSocket ds = new DatagramSocket();

        //准备需要传输的数据(货物)
        String msg = "今天天气真好";
        //将需要发送的数据打包成数据报包(打包货物)
        DatagramPacket packet = new DatagramPacket(
            msg.getBytes(), 		//需要被发送的数据的字节数组
            msg.getBytes().length, 	//发送的数据长度(字节数组长度)
            InetAddress.getByName("localhost"),  //接收方的ip
            1025	//接收方的端口				
        );
        //发送数据报包(投递包裹)
        ds.send(packet);
        //关闭通道
        ds.close();
    }
}





/**
 * 接收方
 * @author mrchai
 *
 */
public class Receiver {

    public static void main(String[] args) throws IOException {
        //创建一个数据报的网络通道,绑定到指定端口
        DatagramSocket ds = new DatagramSocket(1025);

        //声明字节数组,用于存储接收的数据
        byte[] b = new byte[1024];
        //准备数据报包(空包)
        DatagramPacket packet = new DatagramPacket(b, b.length);

        //通过循环可以不断接收发送到当前地址和端口的数据报包
        while(true) {
            //接收数据到数据报包中
            ds.receive(packet);
            //接受到的数据(字节数组)实际长度
            int len = packet.getLength();
            //将字节数组转换为字符串
            String s = new String(b, 0, len);
            //获取发送方的ip地址
            String ip = packet.getAddress().getHostAddress();
            System.out.println("收到来自【"+ip+"】消息:"+s);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值