UDP学习

import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.PrintWriter; import java.net.ServerSocket; import java.net.Socket;

public class TalkServer {

 public static void main(String args[]) {

  try {

   ServerSocket server = null;

   try {

    server = new ServerSocket(8080);

    // 创建一个ServerSocket在端口4700监听客户请求

   } catch (Exception e) {

    System.out.println("can not listen to:" + e);

    // 出错,打印出错信息

   }

   Socket socket = null;

   try {

    socket = server.accept();

    // 使用accept()阻塞等待客户请求,有客户

    // 请求到来则产生一个Socket对象,并继续执行

   } catch (Exception e) {

    System.out.println("Error." + e);

    // 出错,打印出错信息

   }

   String line;

   BufferedReader is = new BufferedReader(new InputStreamReader(      socket.getInputStream()));

   // 由Socket对象得到输入流,并构造相应的BufferedReader对象

   PrintWriter os = new PrintWriter(socket.getOutputStream());

   // 由Socket对象得到输出流,并构造PrintWriter对象

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

   // 由系统标准输入设备构造BufferedReader对象

   System.out.println("Client:" + is.readLine());

   // 在标准输出上打印从客户端读入的字符串

   line = sin.readLine();

   // 从标准输入读入一字符串

   while (!line.equals("bye")) {

    // 如果该字符串为 "bye",则停止循环

    os.println(line);

    // 向客户端输出该字符串

    os.flush();

    // 刷新输出流,使Client马上收到该字符串

    System.out.println("Server:" + line);

    // 在系统标准输出上打印读入的字符串

    System.out.println("Client:" + is.readLine());

    // 从Client读入一字符串,并打印到标准输出上

    line = sin.readLine();

    // 从系统标准输入读入一字符串

   } // 继续循环

   os.close(); // 关闭Socket输出流

   is.close(); // 关闭Socket输入流

   socket.close(); // 关闭Socket

   server.close(); // 关闭ServerSocket

  } catch (Exception e) {

   System.out.println("Error:" + e);

   // 出错,打印出错信息

  }

 }

}

 

import java.io.*;

import java.net.*;

public class TalkClient {

 public static void main(String args[]) {

  try {

   Socket socket = new Socket("127.0.0.1", 8080);

   // 向本机的4700端口发出客户请求

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

   // 由系统标准输入设备构造BufferedReader对象

   PrintWriter os = new PrintWriter(socket.getOutputStream());

   // 由Socket对象得到输出流,并构造PrintWriter对象

   BufferedReader is = new BufferedReader(new InputStreamReader(socket.getInputStream()));

   // 由Socket对象得到输入流,并构造相应的BufferedReader对象

   String readline;

   readline = sin.readLine(); // 从系统标准输入读入一字符串

   while (!readline.equals("bye")) {

    // 若从标准输入读入的字符串为 "bye"则停止循环

    os.println(readline);

    // 将从系统标准输入读入的字符串输出到Server

    os.flush();

    // 刷新输出流,使Server马上收到该字符串

    System.out.println("Client:" + readline);

    // 在系统标准输出上打印读入的字符串

    System.out.println("Server:" + is.readLine());

    // 从Server读入一字符串,并打印到标准输出上

    readline = sin.readLine(); // 从系统标准输入读入一字符串

   } // 继续循环

   os.close(); // 关闭Socket输出流

   is.close(); // 关闭Socket输入流

   socket.close(); // 关闭Socket

  } catch (Exception e) {

   System.out.println("Error" + e); // 出错,则打印出错信息

  }

 }

}

链接成功后,类似一个点对点的会话。

posted @ 2013-01-18 10:35  Gremorse  阅读(142)  评论(0编辑  收藏  举报