From:http://topic.csdn.net/u/20080321/21/661567cf-81d4-420f-a61c-8e7c60cebb05.html?seed=1474100492

CharServer.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.SocketException;

/**
 * 服务器端程序,用于接收连接。

 * 注意,此程序并没有启用多线程,所以顶多算一个原型。
 * 
 * @author 赵学庆 www.java2000.net
 */
public class ChatServer {
  static final int PORT = 8000;

  private byte[] buf = new byte[1000];

  private DatagramPacket dgp = new DatagramPacket(buf, buf.length);

  private DatagramSocket sk;

  public ChatServer() {
    try {
      sk = new DatagramSocket(PORT);
      System.out.println("Server started");
      while (true) {
        sk.receive(dgp);
        String rcvd = new String(dgp.getData(), 0, dgp.getLength()) + ", from address :" + dgp.getAddress() + ",port:"
            + dgp.getPort();
        System.out.println(rcvd);
        String outMessage = "";
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
        try {
          outMessage = stdin.readLine();
        } catch (IOException ie) {
          System.out.println("IO error");
        }
        String outString = "Server say:" + outMessage;
        byte[] buf = outString.getBytes();
        DatagramPacket out = new DatagramPacket(buf, buf.length, dgp.getAddress(), dgp.getPort());
        sk.send(out);
      }
    } catch (SocketException e) {
      System.out.println("cannot open socket");
      e.printStackTrace();
      System.exit(1);
    } catch (IOException e) {
      System.out.println("Communication error");
      e.printStackTrace();
      System.exit(1);
    }
  }

  public static void main(String[] args) {
    new ChatServer();
  }
}
CharClient.java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.DatagramPacket;
import java.net.DatagramSocket;
import java.net.InetAddress;
import java.net.SocketException;
import java.net.UnknownHostException;

/**
 * 客户端程序,用于请求连接。

 * 
 * @author 赵学庆 www.java2000.net
 */
public class ChatClient {
  private DatagramSocket s;

  private InetAddress hostAddress;

  private byte[] buf = new byte[1000];

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

  public ChatClient() {
    try {
      s = new DatagramSocket();
      hostAddress = InetAddress.getByName("localhost");
      while (true) {
        String outMessage = "";
        BufferedReader stdin = new BufferedReader(new InputStreamReader(System.in));
        try {
          outMessage = stdin.readLine();
        } catch (IOException ie) {
          System.err.println("IO error!");
        }
        if (outMessage.equals("bye"))
          break;
        String outString = "Client say: " + outMessage;
        byte[] buf = outString.getBytes();
        DatagramPacket out = new DatagramPacket(buf, buf.length, hostAddress, 8000);
        s.send(out);
        s.receive(dp);
        String rcvd = "rcvd from " + dp.getAddress() + ", " + dp.getPort() + ": " + new String(dp.getData(), 0, dp.getLength());
        System.out.println(rcvd);
      }
    } catch (UnknownHostException e) {
      System.out.println("Can;t open socket");
      System.exit(1);
    } catch (SocketException e) {
      System.out.println("Can;t open socket");
      e.printStackTrace();
      System.exit(1);
    } catch (IOException e) {
      System.err.println("Communication error");
      e.printStackTrace();
      System.exit(1);
    } catch (Exception e) {
      System.err.println("Communication error");
      e.printStackTrace();
      System.exit(1);
    }
    System.out.println("ChatClient over");
  }

  public static void main(String[] args) {
    new ChatClient();
  }
}
快乐渡过每一天,减肥坚持每一天