java使用UDP来进行客户端和服务器端通信的简单例子

    1:客户端程序
view plain

    package com.pb.udp; 
     
    import java.io.ioexception; 
    import java.net.datagrampacket; 
    import java.net.inetaddress; 
    import java.net.unknownhostexception; 
    import java.net.datagramsocket; 
     
    /**
     *  使用sender类来代表客户端程序,
     * @author ccna_zhang
     *
     */ 
    public class sender { 
     
        public static void main(string[] args) { 
            string msg = "hello, world"; 
            byte[] buf = msg.getbytes(); 
            try { 
                inetaddress address = inetaddress.getbyname("192.168.1.80");  //服务器地址 
                int port = 8080;  //服务器的端口号 
                //创建发送方的数据报信息 
                datagrampacket datagrampacket = new datagrampacket(buf, buf.length, address, port); 
                 
                datagramsocket socket = new datagramsocket();  //创建套接字 
                socket.send(datagrampacket);  //通过套接字发送数据 
                 
                //接收服务器反馈数据 
                byte[] backbuf = new byte[1024]; 
                datagrampacket backpacket = new datagrampacket(backbuf, backbuf.length); 
                socket.receive(backpacket);  //接收返回数据 
                string backmsg = new string(backbuf, 0, backpacket.getlength()); 
                system.out.println("服务器返回的数据为:" + backmsg); 
                 
                socket.close(); 
                 
            } catch (unknownhostexception e) { 
                e.printstacktrace(); 
            } catch (ioexception e) { 
                e.printstacktrace(); 
            } 
        } 
    } 


2:服务器端程序
view plain

    package com.pb.udp; 
     
    import java.io.ioexception; 
    import java.net.datagrampacket; 
    import java.net.datagramsocket; 
    import java.net.inetaddress; 
    import java.net.socketaddress; 
    import java.net.unknownhostexception; 
     
    /**
     * 服务器端程序
     * @author ccna_zhang
     *
     */ 
    public class receiver { 
     
        public static void main(string[] args) { 
             
            try { 
                inetaddress address = inetaddress.getlocalhost(); 
                int port = 8080;   
                 
                //创建datagramsocket对象 
                datagramsocket socket = new datagramsocket(port, address); 
                 
                byte[] buf = new byte[1024];  //定义byte数组 
                datagrampacket packet = new datagrampacket(buf, buf.length);  //创建datagrampacket对象 
                 
                socket.receive(packet);  //通过套接字接收数据 
                 
                string getmsg = new string(buf, 0, packet.getlength()); 
                system.out.println("客户端发送的数据为:" + getmsg); 
                 
                //从服务器返回给客户端数据 
                inetaddress clientaddress = packet.getaddress(); //获得客户端的ip地址 
                int clientport = packet.getport(); //获得客户端的端口号 
                socketaddress sendaddress = packet.getsocketaddress(); 
                string feedback = "received"; 
                byte[] backbuf = feedback.getbytes(); 
                datagrampacket sendpacket = new datagrampacket(backbuf, backbuf.length, sendaddress); //封装返回给客户端的数据 
                socket.send(sendpacket);  //通过套接字反馈服务器数据 
                 
                socket.close();  //关闭套接字 
                 
            } catch (unknownhostexception e) { 
                e.printstacktrace(); 
            } catch(ioexception e) { 
                e.printstacktrace(); 
            } 
        } 
    } 


3:程序运行结果

服务器端:

    客户端发送的数据为:hello, world

客户端:

   服务器返回的数据为:received 

猜你喜欢

转载自itoracja.iteye.com/blog/1207267