import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStreamReader;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

public class UDPSendDemo2 {

 /**

  * @param args

  * @throws IOException

  */

 public static void main(String[] args) throws IOException {

  System.out.println("发送端启动......");

  /*

   * 创建UDP传输的发送端。

   * 思路:

   * 1,建立udp的socket服务。

   * 2,将要发送的数据封装到数据包中。

   * 3,通过udp的socket服务将数据包发送出去。

   * 4,关闭socket服务。

   */

  //1,udpsocket服务。使用DatagramSocket对象。

  DatagramSocket ds = new DatagramSocket(8888);



//  String str = "udp传输演示:哥们来了!";

  BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

  String line = null;


  while((line=bufr.readLine())!=null){



   byte[] buf = line.getBytes();

   DatagramPacket dp =

     new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.100"),10000);

   ds.send(dp);


   if("886".equals(line))

    break;

  }


  //4,关闭资源。

  ds.close();

 }

}



package cn.itcast.net.p3.chat;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

public class Rece implements Runnable {

 private DatagramSocket ds;

 public Rece(DatagramSocket ds) {

  this.ds = ds;

 }

 @Override

 public void run() {

  try {

   while (true) {

    // 2,创建数据包。

    byte[] buf = new byte[1024];

    DatagramPacket dp = new DatagramPacket(buf, buf.length);

    // 3,使用接收方法将数据存储到数据包中。

    ds.receive(dp);// 阻塞式的。

    // 4,通过数据包对象的方法,解析其中的数据,比如,地址,端口,数据内容。

    String ip = dp.getAddress().getHostAddress();

    int port = dp.getPort();

    String text = new String(dp.getData(), 0, dp.getLength());


    System.out.println(ip + "::" + text);

    if(text.equals("886")){

     System.out.println(ip+"....退出聊天室");

    }

   }

  } catch (Exception e) {

  }

 }

}



package cn.itcast.net.p3.chat;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.net.DatagramPacket;

import java.net.DatagramSocket;

import java.net.InetAddress;

public class Send implements Runnable {

 private DatagramSocket ds;


 public Send(DatagramSocket ds){

  this.ds = ds;

 }


 @Override

 public void run() {


  try {

   BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));

   String line = null;


   while((line=bufr.readLine())!=null){



    byte[] buf = line.getBytes();

    DatagramPacket dp =

      new DatagramPacket(buf,buf.length,InetAddress.getByName("192.168.1.255"),10001);

    ds.send(dp);


    if("886".equals(line))

     break;

   }


   ds.close();

  } catch (Exception e) {

  }

 }

}