美文网首页
网络编程--基于UDP的Socket编程

网络编程--基于UDP的Socket编程

作者: 鉴闻俗说 | 来源:发表于2018-01-24 14:07 被阅读0次

    1、使用无连接的数据报(UDP)进行通信

    (1)什么是Datagram?
    • 数据报是网上传输的独立数据包,数据报是否能够正确地到达目的地,到达的时间,顺序,内容的正确性均没有保障。
    (2)Java中使用Datagram与DatagramPacket类来完成数据报(UDP)进行通信。
    (3)DatagramSocket类利用UDP协议来实现客户与服务器的Socket。
    (4)send:发送数据报
    (5)recieve:接收数据报

    2、基于UDP的Socket编程

    本个示例包含两端代码:UDPServer和UDPClient。UDPServer先启动,并等待UDPClient和自己打招呼。当UDPClient和自己打招呼后,UDPServer回应UDPClient。具体代码如下:
    (1)UDPServer

    import java.io.IOException;
    import java.net.DatagramPacket;
    import java.net.DatagramSocket;
    
    /**
     * 使用UDP进行通信
     * 服务端
     * @author Chuan
     *
     */
    public class UDPServer
    {
        public static void main(String[] args) throws IOException
        {
            DatagramSocket ds = new DatagramSocket(5000);
            
            /*
             * 接收客户端的消息
             */
            //创建用于接收客户端发送的数据报的数据报
            byte[] buffer = new byte[1024];
            DatagramPacket packetRec = new DatagramPacket(buffer, buffer.length);
            ds.receive(packetRec);
            //处理接收到的数据
            String msg = new String(buffer, 0, packetRec.getLength()); //packetRec.getLength()
            System.out.println(msg);
            
            /*
             * 向客户端发送消息
             */
            byte[] str = "welcom".getBytes();
            DatagramPacket packetSend = new DatagramPacket(str, str.length, 
                    packetRec.getAddress(),packetRec.getPort());
            ds.send(packetSend);
            
            //关闭socket
            ds.close();
        }
    }
    

    (2)UDPClient

    /**
     * 使用UDP进行通信
     * 客户端
     * @author Chuan
     *
     */
    public class UDPClient
    {
        public static void main(String[] args) throws IOException
        {
            DatagramSocket dS = new DatagramSocket();
            
            /*
             * 向服务端发送消息
             */
            byte[] str = "hello".getBytes();
            DatagramPacket dpSend = new DatagramPacket(str, str.length, 
                    InetAddress.getByName("localhost"),5000);
            dS.send(dpSend);
            
            /*
             * 接收服务端的消息
             */
            byte[] msg = new byte[1024];
            DatagramPacket dpRecieve = new DatagramPacket(msg, msg.length);
            dS.receive(dpRecieve);
            System.out.println(new String(msg, 0, dpRecieve.getLength()));
            
            dS.close();
        }
    }
    

    相关文章

      网友评论

          本文标题:网络编程--基于UDP的Socket编程

          本文链接:https://www.haomeiwen.com/subject/wwzyaxtx.html