itoracja 发表于 2013-2-3 10:16:48

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;
                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;//定义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
页: [1]
查看完整版本: java使用UDP来进行客户端和服务器端通信的简单例子