zoukankan      html  css  js  c++  java
  • UDP通信例子

    服务端:

    package com.socket.udp;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetSocketAddress;
    import java.net.SocketException;
    
    /**
     * 基于UDP协议通信,服务端程序。
     */
    public class Server
    {
        private DatagramSocket server = null;
        private InetSocketAddress addr = null;
        private final byte[] buffer = new byte[256];
        private DatagramPacket packet = null;
    
        public Server(String host, int port) throws SocketException
        {
            this.addr = new InetSocketAddress(host, port);
            this.server = new DatagramSocket(this.addr);
            System.out.println("服务端开启");
        }
    
        /**
         * 接收
         */
        public String receive() throws IOException
        {
            this.packet = new DatagramPacket(this.buffer, this.buffer.length);
            this.server.receive(this.packet);
            return new String(this.packet.getData(), 0, this.packet.getLength());
        }
    
        /**
         * 发送
         */
        public DatagramPacket response(String info) throws IOException
        {
            DatagramPacket p = new DatagramPacket(this.buffer, this.buffer.length, this.packet.getAddress(), this.packet.getPort());
            p.setData(info.getBytes());
            this.server.send(p);
            return p;
        }
    
        public static void main(String[] args) throws IOException
        {
            String serverHost = "127.0.0.1";
            int serverPort = 10000;
            Server server = new Server(serverHost, serverPort);
            while (true)
            {
                System.out.println("服务端接收到:" + server.receive());
                server.response("server说:客户端你好!");
            }
        }
    
    }

    客户端:

    package com.socket.udp;
    
    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    import java.net.InetAddress;
    import java.net.SocketException;
    import java.net.UnknownHostException;
    
    /**
     *  基于UDP协议通信,客户端程序。
     */
    public class Client
    {
        private DatagramSocket client = null;
        private DatagramPacket packet = null;
        private final byte[] buffer = new byte[1024];
    
        public Client(String host, int port, byte[] bytes) throws SocketException, UnknownHostException
        {
            this.client = new DatagramSocket();
            this.packet = new DatagramPacket(bytes, bytes.length, InetAddress.getByName(host), port);
            System.out.println("客户端开启");
        }
    
        /**
         * 发送
         */
        public DatagramPacket send() throws IOException
        {
            this.client.send(this.packet);
            return this.packet;
        }
    
        /**
         * 接收
         */
        public String receive(String host, int port) throws IOException
        {
            DatagramPacket p = new DatagramPacket(this.buffer, this.buffer.length, InetAddress.getByName(host), port);
            this.client.receive(p);
            return new String(p.getData());
        }
    
        public String receive2() throws IOException
        {
            DatagramPacket p = new DatagramPacket(this.buffer, this.buffer.length, this.packet.getAddress(), this.packet.getPort());
            this.client.receive(p);
            return new String(p.getData());
        }
    
        public static void main(String[] args) throws IOException
        {
            String serverHost = "127.0.0.1";
            int port = 10000;
            Client client = new Client(serverHost, port, "client说:服务器你好!".getBytes());
            client.send();
            //String info = client.receive(serverHost, port);
            System.out.println("客户端接收到:" + client.receive2());
        }
    
    }
  • 相关阅读:
    Project Euler 81:Path sum: two ways 路径和:两个方向
    Project Euler 80:Square root digital expansion 平方根数字展开
    Project Euler 79:Passcode derivation
    lintcode 中等题:Intersection of Two Linked Lists 两个链表的交叉
    lintcode 中等题:Divide Two Integers 两个数的除法
    lintcode 中等题 :Maximum Product Subarray 最大连续乘积子序列
    lintcode:First Missing Positive 丢失的第一个正整数
    山丘
    在山的那边
    lintcode :Ugly Numbers 丑数
  • 原文地址:https://www.cnblogs.com/chrono/p/4026642.html
Copyright © 2011-2022 走看看