• UDP协议的例子


    public class Service { // 服务器
            public static void main(String[] args) {
                  DatagramPacket dp = null; //打包 和 拆包数据
                  DatagramSocket ds = null; // 接收和 发送数据
                 //创建一个包 给客户端响应
                  DatagramPacket dpTo=null;
                 try {
                     byte [] buf=new byte[1024];
                   //创建数据包的对象
                    dp=new DatagramPacket(buf, buf.length);
                    ds=new DatagramSocket(8800);
                 //接收
                 ds.receive(dp);
                //显示接收的信息 拆包
                   String msg=new String(dp.getData(), 0, dp.getLength());
                  //获取 对方的地址 客户端的信息
                  System.out.println(dp.getAddress().getHostAddress()+"说====:"+msg);
                 //回复给 客户端
                  byte[] reply="您好!航母已经发货!".getBytes();
                 // dp就是从客户端传来的信封 信封上肯定有 寄件人的地址
                  SocketAddress address=dp.getSocketAddress();
                 //打包成功
                  dpTo=new DatagramPacket(reply, reply.length,address);
               //发送
                  ds.send(dpTo);
         } catch (SocketException e) {
            e.printStackTrace();
          } catch (IOException e) {
             e.printStackTrace();
         }
      }
    }

    基于UDP的客服端代码

    public class Client {    //客户端
        public static void main(String[] args) {
            DatagramPacket dp = null;  //打包 和 拆包数据 
            DatagramSocket ds = null;  // 接收和 发送数据
            //创建一个包 给服务器响应
            DatagramPacket  dpTo=null;
            InetAddress address=null;
            try {
                //你在网上购物  要不要给客服 说你的地址
                byte[]  say="买个航空母舰!".getBytes();
                //获取本机的地址!
                address = InetAddress.getByName("localhost");
                //打包
                dp=new DatagramPacket(say, say.length,address,8800);
                //发送
                ds=new DatagramSocket();
                ds.send(dp);
                
                //接收
                byte [] buf=new byte[1024];
                dpTo=new DatagramPacket(buf, buf.length);
                ds.receive(dpTo);
                //我们看客服给我们回复了 什么     拆包
                String reply=new String(dpTo.getData(),0,dpTo.getLength());
                System.out.println(dpTo.getAddress().getHostAddress()+"说===》"+reply);
            } catch (UnknownHostException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }        
        }
    
    }
  • 相关阅读:
    2016第13周四
    2016第13周周三
    2016第13周二
    2016第13周一
    2016第12周日
    2016第11周五
    2016第11周四
    前端的自我成长
    Java单例模式和volatile关键字
    大约 Apple Metal API 一些想法
  • 原文地址:https://www.cnblogs.com/HHR-SUN/p/7039286.html
Copyright © 2020-2023  润新知