zoukankan      html  css  js  c++  java
  • UDP与TCP

    UDP协议与TCP协议

      UDP协议

         UDP是一个非连接的协议,传输数据之前源端和终端不建立连接,即发送端不用等接收端建立连接,单独发布消息,

        用于音频、视频和普通数据的传输。

      TCP协议  

        TCP(Transmission Control Protocol,传输控制协议)是面向连接的协议,也就是说,在收发数据前,必须和对方建立可靠的连接。一个TCP连接必须要经过三次“握手”才能建立,其中的过程非常复杂,经过三次“对话”之后,主机A才向主机B正式发送数据。

        一般用于接收文件,可以确保安全性。

      UDP协议与TCP协议之间的区别

        1.udp连接无要求,tcp连接需要确保发送端与接收端之间的联系;
        2.对系统资源的要求(TCP较多,UDP少);
        3.UDP程序结构较简单;
        4.TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

    UDP通信与TCP通信

      UDP通信

        常用的两个类:DatagramPacket、DatagramSocket,分别用于对数据的打包和接收。具有单独的构造方法。

        DatagramPacket常用方法:

          getAddress():获取发送端的ip地址

          getPort():获取发送端的端口号

          getData():获取接收的数据

          getLength():获取接收数据的长度

        DatagramSocket常用方法:

          receive():接收数据包

          send():发送数据包

        UDP编程的接收端一般步骤是: 

     1 //创建datagramSocket对象,明确端口号
     2         DatagramSocket ds=new DatagramSocket(8888);
     3         //创建空的字节数组用于数据接收
     4         byte[] bs=new byte[1024];
     5         //创建空的datagramPacket对象,传给ds用于接收数据
     6         DatagramPacket dp=new DatagramPacket(bs, bs.length);
     7         //接收数据包
     8         ds.receive(dp);
     9         //拆包
    10         //获取发送端的ip地址
    11         String ip=dp.getAddress().getHostAddress();
    12         //获取发送端的端口号
    13         int port=dp.getPort();
    14         //获取接收的数据
    15         byte[] b=dp.getData();
    16         //获取接收数据的长度
    17         int length=dp.getLength();
    18         System.out.println("ip地址为"+ip+"端口号为"+port+"发送内容为"+new String(b,0,length));

        UDP编程的发送端一般步骤是:

     1 //创建datagramPacket对象对数据进行打包
     2         //创建字节数组封装数据
     3         byte[] bs="我不好呢".getBytes();
     4         //明确目的地
     5         InetAddress inet=InetAddress.getByName("192.168.1.175");
     6         //打包
     7         DatagramPacket dp=new DatagramPacket(bs, bs.length,inet,8888);
     8         //创建datagramSocket对象,负责发送数据包
     9         DatagramSocket ds=new DatagramSocket();
    10         //发送数据包
    11         ds.send(dp);
    12         //释放资源
    13         ds.close();

      TCP通信

        常用的两个类:ServerSocket、Socket分别用于表示服务器端和表示客户端。

        ServerSocket作用相当于开启一个服务,并等待客户端的连接,

        Socket向服务器端发出连接请求,服务器端响应请求,两者建立连接开始通信。

        TCP编程的服务器端一般步骤是:

     1 //创建serversocker对象,明确端口号
     2         ServerSocket server=new ServerSocket(6666);
     3         //与客户端创建连接,并获取客户端对象
     4         Socket socket=server.accept();
     5         //获取字节输入流,接收客户端发送的数据
     6         InputStream in=socket.getInputStream();
     7         byte[] bs=new byte[1024];
     8         int len=0;
     9         while((len=in.read(bs))!=-1){
    10             System.out.println(new String(bs,0,len));
    11         }
    12         //服务器端给客户端响应
    13         //获取字节输出流,写给客户端响应
    14         OutputStream out=socket.getOutputStream();
    15         //写数据
    16         out.write("收到".getBytes());
    17         socket.shutdownOutput();
    18         //释放资源
    19         server.close();
    20     }

        TCP编程的客户端一般步骤是: 

     1 //创建客户端对象Socket
     2         Socket socket=new Socket("127.0.0.1",6666);
     3         //从socket对象获取字节输出流,将数据写向服务器
     4         OutputStream out=socket.getOutputStream();
     5         out.write("你好啊".getBytes());
     6         socket.shutdownOutput();//流里没有结束标记
     7         
     8         //接收服务器的回应
     9         //获取字节输入流,接收服务器端给的响应数据
    10         InputStream in=socket.getInputStream();
    11         byte[] bs=new byte[1024];
    12         int len=0;
    13         while((len=in.read(bs))!=-1){
    14             System.out.println(new String(bs,0,len));
    15         }
    16         //释放资源
    17         socket.close();   //new 的 用的 要关闭

        如图所示:

            

  • 相关阅读:
    MS CRM 2011 RC中的新特性(4)——活动方面之批量编辑、自定义活动
    最近的一些有关MS CRM 2011的更新
    MS CRM 2011 RC中的新特性(6)——连接
    MS CRM 2011 RC中的新特性(7)—仪表板
    参加MS CRM2011深度培训课程——第一天
    MS CRM 2011插件调试工具
    MS CRM2011实体介绍(四)——目标管理方面的实体
    MS CRM 2011 RC中的新特性(3)——客户服务管理方面
    MS CRM 2011 RC中的新特性(8)—数据管理
    ExtAspNet 登陆
  • 原文地址:https://www.cnblogs.com/zhai113/p/11797623.html
Copyright © 2011-2022 走看看