A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

UDP传输:
    发送端思路:
       1:建立udp的socket服务
       2:将要发送的数据封装成数据包
       3:通过udp的socket服务,将数据包发送出
       4:关闭资源
  1. import java.io.IOException;
  2. import java.net.DatagramPacket;
  3. import java.net.DatagramSocket;
  4. import java.net.InetAddress;
  5. import java.net.SocketException;
  6. import java.net.UnknownHostException;

  7. /*
  8. * UDP协议发送数据:
  9. * A:创建发送端Socket对象
  10. * B:创建数据,并把数据打包
  11. * C:调用Socket对象的发送方法发送数据包
  12. * D:释放资源
  13. */
  14. public class SendDemo {
  15.         public static void main(String[] args) throws IOException {
  16.                 //创建发送端Socket对象
  17.                 // DatagramSocket()
  18.                 DatagramSocket ds = new DatagramSocket();
  19.                 //创建数据并把数据打包
  20.                 // DatagramPacket(byte[] buf, int length, InetAddress address, int port)
  21.                 //创建数据
  22.                 byte[] bys = "hello,udp,我来了".getBytes();
  23.                 //长度
  24.                 int length = bys.length;
  25.                 //IP地址对象
  26.                 InetAddress address = InetAddress.getByName("192.168.0.116");
  27.                 //端口
  28.                 int port = 10086;
  29.                 DatagramPacket dp = new DatagramPacket(bys, length,address,port);
  30.                 //调用socket对象的发送方法发送数据包
  31.                 // public void send(DatagramPacket p)
  32.                 ds.send(dp);
  33.                 //释放资源
  34.                 ds.close();
  35.         }
  36. }
复制代码

    接收端思路:
      1:建立udp的socket服务.
      2:通过receive方法接收数据
      3:将收到的数据存储到数据包对象中
      4:通过数据包对象的功能来完成对接收到数据进行解析.
      5:可以对资源进行关闭
  1. import java.io.IOException;
  2. import java.net.DatagramPacket;
  3. import java.net.DatagramSocket;
  4. import java.net.InetAddress;
  5. import java.net.SocketException;

  6. /*
  7. * UDP协议接收数据:
  8. * A:创建接收端Socket对象
  9. * B:创建一个数据包(接收容器)
  10. * C:调用Socket对象的接收方法接收数据
  11. * D:解析数据包,并显示在控制台
  12. * E:释放资源
  13. */
  14. public class ReceiveDemo {
  15.         public static void main(String[] args) throws IOException {
  16.                 // 创建接收端Socket对象
  17.                 // DatagramSocket(int port)
  18.                 DatagramSocket ds = new DatagramSocket(10086);
  19.                 // 创建一个数据包(接收容器)
  20.                 // DatagramPacket(byte[] buf, int length)
  21.                 byte[] bys = new byte[1024];
  22.                 int length = bys.length;
  23.                 DatagramPacket dp = new DatagramPacket(bys, length);
  24.                 // 调用socket对象的接收方法接收数据
  25.                 // public void receive(DatagramPacket p)
  26.                 ds.receive(dp);// 阻塞式
  27.                 // 解析数据包,并显示在控制台
  28.                 // 获取对方的ip
  29.                 // public InetAddress getAddress()
  30.                 InetAddress address = dp.getAddress();
  31.                 String ip = address.getHostAddress();
  32.                 // public byte[] getData():获取数据缓冲区
  33.                 // public int getLength():获取数据的实际长度
  34.                 byte[] bys2 = dp.getData();
  35.                 int len = dp.getLength();
  36.                 String s = new String(bys2, 0, len);
  37.                 System.out.println(ip + "传递的数据是:" + s);
  38.                 //释放资源
  39.                 ds.close();
  40.         }
  41. }
复制代码

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马