zoukankan      html  css  js  c++  java
  • java,UDP协议简单实现

    //UDP协议简单实现-----Server
    package
    UDP; import java.net.DatagramPacket; import java.net.DatagramSocket; import java.net.InetSocketAddress; import java.nio.ByteBuffer; public class UdpServer implements Runnable { private int port; public UdpServer(int port) { this.port = port; } public void run() { try { // listening at port for udp request DatagramSocket server = new DatagramSocket(new InetSocketAddress(port)); byte[] bs = new byte[4]; ByteBuffer bbuf = null; DatagramPacket data = new DatagramPacket(bs, bs.length); server.setSoTimeout(1000 * 10); // set timeout while (true) { // 一直监听 server.receive(data); bbuf = ByteBuffer.wrap(bs, 0, 4); String s = "receive " + data.getData().length + " byte data,value: " + bbuf.getInt(); System.out.println(s); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { new Thread(new UdpServer(11111)).start(); } }

    //客户端实现;

    package UDP;
    
        import java.net.DatagramPacket;
        import java.net.DatagramSocket;
        import java.net.InetSocketAddress;
    
    
        public class UdpClient implements Runnable {
            private int port;
    
            public UdpClient(int port) {
                this.port = port;
            }
    
            public void run() {
                try {
                    DatagramSocket client = new DatagramSocket();
                    byte[] bs = new byte[4];
                    InetSocketAddress isa = new InetSocketAddress("localhost", port);
                    DatagramPacket data = new DatagramPacket(bs, bs.length);
                    data.setSocketAddress(isa);
                    for (int i = 0; i < 10; i++) {
                        data.setData(int2bytes(i));
                        client.send(data);
                    }
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
    
            static byte[] int2bytes(int num) {
                byte[] b = new byte[4];
                for (int i = 0; i < 4; i++) {
                    b[i] = (byte) (num >>> (24 - i * 8));
                }
                return b;
            }
        }

    //测试代码;

    package UDP;
    
    public class Test {
        public static void main(String[] args) throws InterruptedException {
            int port = 11111;
            try{
                new Thread(new UdpServer(port)).start();
                new Thread(new UdpClient(port)).start();
            }catch(Exception e){
                //e.printStackTrace();
            }
        }
    }
  • 相关阅读:
    JeecgBoot 2.4 微服务正式版发布,基于SpringBoot的低代码平台
    JeecgBoot 常见问题Q&A
    docker安装rabbitmq延时队列插件
    docker安装nacos
    docker安装xxl-job-admin
    docker安装rabbitmq
    低代码开发平台有哪些?
    对比 jeecgboot 和国内外其它低代码平台的区别
    JimuReport积木报表 — API数据源报表带参制作
    JimuReport积木报表 — API数据源报表制作
  • 原文地址:https://www.cnblogs.com/qianyukun/p/4308785.html
Copyright © 2011-2022 走看看