• 网络编程-UDP程序实例(基础)


     1 package com.yyq;
     2 
     3 import java.net.DatagramPacket;
     4 import java.net.DatagramSocket;
     5 import java.net.InetAddress;
     6 import java.net.Socket;
     7 import java.net.SocketException;
     8 import java.nio.charset.MalformedInputException;
     9 
    10 /*
    11  * Socket(插座): 为网络服务提供的 一种机制
    12  *              通信的两端都有socket
    13  *              网络通信其实就在Socket间的通信
    14  *              网络在两个Socket间通过IO传输
    15  */
    16 /*
    17  *需求:通过udp传输方式,将一段文字数据发送出去
    18  * 思路:1.先建立updsocket服务(端点)
    19  *     2.提供数据,并将数据封装到数据包中
    20  *     3.通过socket服务的发送功能,将数据包发送出去
    21  *     4.关闭资源
    22  */
    23 public class UDPSend{
    24     public static void main(String[] args) throws Exception {
    25         //1.创建upd服务,通过DatagramSocket对象
    26         DatagramSocket ds = new DatagramSocket(8999);
    27         //2.确定数据,并封装成数据包
    28         /*
    29          * DatagramPacket(byte[] buf, int length, InetAddress address, int port) 
    30               构造数据报包,用来将长度为 length 的包发送到指定主机上的指定端口号。
    31          */
    32         byte[] buf = "udp wo yao xue hui".getBytes();
    33         DatagramPacket dp = new DatagramPacket(buf,buf.length,InetAddress.getLocalHost(),4444);
    34         //3.通过socket服务,将已有的数据包发送出去,通过send方法发送
    35         ds.send(dp);
    36         //4.关闭资源
    37         System.out.println("发送成功!!");
    38     }
    39 }
    40 
    41 
    42 
    43 
    44 package com.yyq;
    45 
    46 import java.net.DatagramPacket;
    47 import java.net.DatagramSocket;
    48 
    49 /*
    50  * 需求:定义一个应用程序,用于接收数据并处理的
    51  * 定义udp服务,通常会监听一个端口,其实就是给这个接受网络应用程序定义数字标识
    52  * 方便与明确哪些应用程序过来该程序可以处理。
    53  * 思路:
    54  *     1.定义updsocket 服务
    55  *  2.提取数据信息,在数据包中有相对应的功能解封数据包
    56  *  所以要定义数据包,因为要存储接收到的字节数据,因为数据包对象中有更多
    57  *  的功能可以提取字节数据中的不同数据信息
    58  *  3.通过socket服务的receive方法,将受到的数据存入到已定义好的数据包中
    59  *  4.通过数据包对象的特有功能,将这些不同的数据取出,打印在控制台上
    60  *  5.关闭资源。
    61  */
    62 public class UDPRece {
    63     public static void main(String[] args)throws Exception {
    64         
    65         //1.创建 upd socket,建立端点
    66         DatagramSocket ds = new DatagramSocket(4444);
    67         while(true){
    68         //2.定义数据包,用于存储数据
    69         byte[] buf = new byte[1024];
    70         DatagramPacket dp = new DatagramPacket(buf,buf.length);
    71         //3. 通过服务的receive 方法将数据存入到数据包中
    72         // 阻塞式方法  ---receive 方法
    73         ds.receive(dp);
    74         //4.通过数据包的方法获取其中的数据
    75         String ip = dp.getAddress().getHostAddress();
    76         String data = new String(dp.getData(),0,dp.getLength());
    77         int s = dp.getPort();
    78         System.out.println(ip + ":" + data+":"+s);
    79         
    80         }
    81         //ds.close();
    82     }
    83 }
  • 相关阅读:
    elastic search-php 多关键词查询实践(名称,日期,省份)
    记一次thinkphp 配置主从域名网站单点登录,退出
    thinkphp6 解决登录session跨域
    php富文本图片传递 通用css更改
    ELASTIC-PHP + IK分词器 + THINKPHP6 初次使用 (关键词查询)
    think-queue 加 redis实现批量导入excel
    百度api根据ip获取省市区
    php使用GD库将图片圆角 解决背景变黑问题 以及 图片丢失问题
    在树莓派上实现截图
    Arduino入门实践(五)--1、关于lcd的成像原理
  • 原文地址:https://www.cnblogs.com/yangyongqian/p/5142442.html
Copyright © 2020-2023  润新知