您的位置:首页 > 理论基础 > 计算机网络

黑马程序员_java网络编程——UDP传输和TCP传输

2015-03-24 22:29 776 查看
 ------- <a href="http://www.itheima.com" target="blank">android培训</a>、<a href="http://www.itheima.com" target="blank">java培训</a>、期待与您交流! ----------

       在网络编程上两种常见的通信协议是TCP协议和UDP协议。由于TCP协议的特点是:持续、可靠、有连接但是对资源的要求比较高,也比较复杂,效率不高。而UDP协议的特点是:无连接的,文件被打包后什么时候发送是不定时的,还有可能在传输时丢包, 而且文件的大小也是有限制的,而不像TCP是流协议可以持续的传输信息。因而选择哪种同信方式的原则就是:当通信对安全性、可靠性的要求较高或者文件较大时用TCP协议,反之则用UDP协议。

            一、  UDP协议发送方的操作步骤为:

       1.创建一个DatagramSocket实例      DatagramSocket ds=new DatagramSocket();

        2.将要发送的数据转为字节数组,打包并指定接收方的地址及端口

         String str="你们好吗?";

         byte[] bytes=str.getBytes();

         DatagramPacket dp=new DatagramPacket

                        (bytes,bytes.length,InetAddress.getByName("127.0.0.1"),10000);

         3.发送              ds.send(dp);

         4.关闭资源      ds.close();

         二、UDP协议接收方的操作步骤为:

       
  1.创建一个DatagramSocket实例并指定端口      DatagramSocket ds=new DatagramSocket(10000);

          2创建一个包来接受数据

        byte []bytes=new byte[1024];

        DatagramPacket dp=new Dat

       agramPacket(bytes,bytes.length);

         3.接收     
ds.receive(dp);

        
4.关闭资源      ds.close();

       这样就是完整的UDP通信过程,对于TCP通信其步骤如下:

           一、TCP通信服务器端的操作步骤

           1.创建ServerSocket
并监听一个端口 ServerSocket ss=new ServerSocket(9999);

           2.用ServerSocket
类的accept()方法得到
Socket 连接,如果客户端没有连接将阻塞在这里

                Socket s=ss.accept();

           3.通过这个连接接收来自客户端的数据

            InputStreamReader isr=new InputStreamReader(s.getInputStream());

            BufferedReader br=new BufferedReader(isr);

            4.将数据以字符串的形式打印出来这几步就完成了单向的通信

            String info=br.readLine();

            System.out.println("服务器传来的数据为:"+info);

        
二、TCP通信客户端的操作步骤

           1.创建Socket连接用来连接服务器,让他们之间建立数据的通路

           Socket
s=new Socket("127.0.0.1",9999);

          2.创建PrintWriter 流

          PrintWriter pw=new PrintWriter(s.getOutputStream(),true);

         3.向Socket里面写东西

         pw.println(br.readLine());
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息