UDP发送数据的步骤:
  A:创建发送端的Socket服务对象

  B:创建数据,并把数据打包

  C:通过Socket对象的发送功能发送数据包

  D:释放资源

public class SendDemo {
    public static void main(String[] args) throws IOException {
        //创建发送端的Socket服务对象
        //public DatagramSocket()
        DatagramSocket ds = new DatagramSocket();
        
        //创建数据,并把数据打包
        //public DatagramPacket(byte[] buf,int Length,InetAddress address,int port)
        //buf其实就是要发送的数据信息
        //length表示要发送的数据长度
        //address数据要发到哪里去,对应的哪个IP地址对象
        //port端口号
        //byte[] bys = "***".getBytes();
        //int length = bys.length;
        //InetAddress address = InetAddress.getByName("***.***.**.***");
        //int port = 10086;
        //DatagramPacket p = new DatagramPacket(bys,length,address,port);
        
        //封装键盘录入
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String line = null;
        while((line = br.readLine())!= null) {
            byte[] bys = line.getBytes();
            DatagramPacket dp = new DatagramPacket(bys, bys.length, InetAddress.getByName("000.000.00.000"), 10010);
            
            //通过Socket对象的发送功能发送数据包
            //public void send(DatagramPacket p)
            ds.send(dp);
        }
          
        //释放资源
        ds.close();
    }
}

UDP接收数据的步骤:

  A:创建接收端的Socket服务对象

  B:创建一个数据包,用于接收数据

  C:接收数据

  D:解析数据,并显示在控制台

  E:释放资源

public class ReceiveDemo {
    public static void main(String[] args) throws IOException {
        //创建接收端的Socket服务对象,并且指定端口号
        DatagramSocket ds = new DatagramSocket(10010);
        while(true){
            //创建一个数据包,用于接收数据
            byte[] bys = new byte[1024];
            DatagramPacket dp = new DatagramPacket(bys, bys.length);
            
            //接收数据
            ds.receive(dp);
            
            //解析数据
            //获取ip地址
            String ip = dp.getAddress().getHostAddress();
            
            //获取数据
            String data = new String(dp.getData(),0,dp.getLength());
            System.out.println("from " + ip + " data is " + data);
        }
        
        //释放资源(服务器一般永远是开着的)
        //ds.close();
    }
}

最新文章

  1. [转]Patch文件结构详解
  2. Redis3.0 配置文件说明
  3. <<软技能,代码之外的生存技能>>读书笔记
  4. 解剖SQLSERVER 第十四篇 Vardecimals 存储格式揭秘(译)
  5. App接口简介
  6. ping 有端口的ip
  7. 抓包工具Fidder设置(移动端抓包)
  8. openerp 经典收藏 Openerp开发进销存系统完毕总结(转载)
  9. 16% off MPPS V16 ECU tuning tool for EDC15 EDC16 EDC17
  10. jQuery Ajax 实例 全解析
  11. 用一条SQL语句取出第 m 条到第 n 条记录的方法
  12. Android Service学习之IntentService 深入分析
  13. Git:常用功能 - 命令行
  14. # 团队作业8——第二次项目冲刺(Beta阶段)--5.27 seventh day
  15. C++课程设计类作业3
  16. 连接mysql数据库报错java.sql.SQLException: The server time zone value '�й���׼ʱ��' is unrecognized...解决方法
  17. angularjs作用域之transclude
  18. 深度学习(Deep Learning)资料大全(不断更新)
  19. WinForm中一个窗体调用另一个窗体
  20. linux Vue+nginx+django 实现前后端分离

热门文章

  1. 重新整理 .net core 周边阅读篇————AspNetCoreRateLimit 之规则[二]
  2. docker - compose 部署 Nginx
  3. LOJ6356 四色灯(容斥+dp
  4. 创建第一个Android项目
  5. 2020.10.23-vj个人赛补题
  6. CSS引入字体文件
  7. 如何查找一个目录中所有c文件的总行数
  8. webRTC中语音降噪模块ANS细节详解(二)
  9. 编程题:X星人的金币
  10. Unity——计时器功能实现