黑马程序员技术交流社区

标题: [石家庄校区]JavaEE网络编程笔记 [打印本页]

作者: g207776411    时间: 2018-4-23 15:45
标题: [石家庄校区]JavaEE网络编程笔记
本帖最后由 小石姐姐 于 2018-4-26 14:17 编辑

JavaEE网络编程笔记

Day_12网络编程与协议  
      创建发送端Socket对象
      创建数据并打包
      发送数据
      释放资源
发送数据                  
  
  /*
   * // 1. 为发送端创建Socket对象(DatagramSocket)
      DatagramSocket datagramSocket = new DatagramSocket();
      
      // 2. 创建数据并打包
      DatagramPacket datagramPacket = new DatagramPacket(byte数组, 数组长度, InetAddress对象, 端口号);
      
      // 3. 发送数据
      datagramSocket.send(datagramPacket);
      
      // 4. 释放资源
      datagramSocket.close();
   */
  ​
  public class SendDemo {
      public static void main(String[] args) throws IOException {
          // 先创建 DatagramSocket对象
          DatagramSocket ds = new DatagramSocket();
  ​
          // 创建一个空包来存放数据 ,并且要给包指定地址,要发送的东西和发多少,端口号
          String s = "这是UDP";
          // 将字符串转换成字节数组
          byte[] by = s.getBytes();
          DatagramPacket dp = new DatagramPacket(by, by.length, InetAddress.getByName("192.168.1.116"), 8870);
         
          ds.send(dp);
          // 关闭资源
          ds.close();
      }
  }
//接收数据
  
  ​
       * 接收 本地主机 发送过来
          ”Hello,I am comming”
          利用DatagramSocket和DatagramPacket完成
          接收端,并打印发送过来的数据
      
  ​
       */
  public class ReceiveDemo {
      // public static void main(String[] args) throws IOException {
      // // 创建接收端接收端口号
      // DatagramSocket ds = new DatagramSocket(8870);
      // // 创建空包接收
      // byte[] by = new byte[1024];
      // DatagramPacket packet = new DatagramPacket(by, by.length);
      // // 接收数据
      // ds.receive(packet);
      //
      // // 解析数据
      // // 获取了Ip地址
      // InetAddress address = packet.getAddress();
      // // 将获取到的字符数组解析
      // byte[] data = packet.getData();
      // // 接收多少,我们就输出多少
      // String msg = new String(data, 0, packet.getLength());
      //
      // System.out.println("[" + address + "]发来消息:" + msg);
      //
      // // 关闭数据
      // ds.close();
      //
      // }
      public static void main(String[] args) throws IOException {
          // 创建协议对象接收定义的端口号
          DatagramSocket dp = new DatagramSocket(8870);
          // 创建一个空包来接收
          byte[] by = new byte[1024];
          DatagramPacket dg = new DatagramPacket(by, by.length);
          // 接收数据
          dp.receive(dg);
          //解析数据
          //第一步先获取到数据
          byte[] data=dg.getData();
         
          String str=new String(data,0,dg.getLength());
          System.out.println("我收到你发送的数据了:"+str+"\t原来你是"+dg.getAddress().getHostName());      
      }
  }
  ​TCP协议发送数据
  
  // 1. 创建客户端Socket对象(建立连接)
  Socket socket = new Socket(InetAddress地址, 端口号);
  // 2. 获取输出流对象
  OutputStream outputStream = socket.getOutputStream();
  // 3. 发送数据
  outputStream.write(byte数组);
  // 4. 释放资源
  socket.close();
TCP协议接收数据







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