黑马程序员技术交流社区

标题: UDP 接收 [打印本页]

作者: fmi110    时间: 2015-9-17 17:46
标题: UDP 接收
  1. package net.program;

  2. import java.io.IOException;
  3. import java.net.DatagramPacket;
  4. import java.net.DatagramSocket;
  5. import java.net.InetAddress;

  6. public class UdpSendDemo {

  7.         /**
  8.          *         192.168.11.248
  9.                 255.255.255.0
  10.                 192.168.11.1
  11.          * UDP数据报协议发送数据流程:
  12.          *         1 创建发送端的Socket对象,DatagramSocket
  13.          *  2 创建数据,并将数据封包,底层为IO数据流
  14.          *  3 调用DatagramSocket对象的发送方法,将数据发送
  15.          *  4 释放资源
  16.          * @throws IOException
  17.          */
  18.         public static void main(String[] args) throws IOException {
  19.                 //DatagramSocket()
  20. //        构造数据报套接字并将其绑定到本地主机上任何可用的端口。
  21.                 DatagramSocket ds = new DatagramSocket();
  22.                 //创建数据
  23.                 byte[] bys = "This is UDP demo".getBytes();
  24.                 int length = bys.length;
  25.                 //数据封装DatagramPacket
  26.                 //DatagramPacket(byte[] buf, int length, InetAddress address, int port)
  27.                 InetAddress address = InetAddress.getByName("192.168.11.248");
  28. //                System.out.println(address.getHostAddress()+"..."+address.getHostName());
  29.                 DatagramPacket dp = new DatagramPacket(bys, length, address,10086);
  30.                 ds.send(dp);
  31.                 //释放资源
  32.                 ds.close();
  33.         }

  34. }
复制代码



作者: fmi110    时间: 2015-9-17 17:48
  1. package net.program;

  2. import java.io.IOException;
  3. import java.net.DatagramPacket;
  4. import java.net.DatagramSocket;
  5. import java.net.InetAddress;

  6. public class UdpReceiveDemo {

  7.         /**
  8.          * UDP接收程序:
  9.          *  1 创建UDP套接字对象,DatagramSocket,并指定接收端口
  10.          *  2 创建接收数据包DatagramPacket
  11.          *  3 调用DatagramSocket的接收方法,接收数据,放入DatagramPacket
  12.          *  4 解析数据包并输出到控制台
  13.          *  5 释放资源
  14.          * @throws IOException
  15.          */
  16.         public static void main(String[] args) throws IOException {
  17.                 //创建套接字
  18.                 DatagramSocket ds = new DatagramSocket(10086);
  19.                 //创建接收容器,数据报包
  20.                 byte[] buf = new byte[1024];
  21.                 DatagramPacket dp = new DatagramPacket(buf, 1024);
  22.                 //接收数据报包
  23.                 ds.receive(dp);//该方法在接收到数据报之前一直阻塞
  24.                 //获取ip地址
  25.                 InetAddress address = dp.getAddress();
  26.                 System.out.println(address.getHostName()+"..."+address.getHostAddress()+" 发来消息:");
  27.                 //解析数据包内容,数据+长度
  28.                 byte[] datas = dp.getData();
  29.                 int length = dp.getLength();
  30.                 String message = new String(datas,0,length);
  31.                 System.out.println(message);
  32.                 //释放资源
  33.                 ds.close();
  34.         }

  35. }
复制代码





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2