socket for echo

来源:互联网 发布:it发展前景 编辑:程序博客网 时间:2024/06/07 07:04

服务端:

public class EchoServer{
 public static void main(String args[]) throws Exception { // 所有异常抛出
  ServerSocket server = null ;  // 定义ServerSocket类
  Socket client = null ; // 表示客 户端
  BufferedReader buf = null ; // 接收输入流
  PrintStream out = null ;  // 打印流输出最方便
  server = new ServerSocket(8888) ; // 服务器在8888端口上监听
  boolean f = true ; // 定义个标记位
  while(f){
   System.out.println("服务器运行,等待客户端连接。") ;
   client = server.accept() ;  // 得到连接,程序进入到阻塞状态
   out = new PrintStream(client.getOutputStream()) ;
   // 准备接收客户端的输入信息
   buf = new BufferedReader(new InputStreamReader(client.getInputStream())) ;
   boolean flag = true ; // 标志位,表示可以一直接收并回应信息
   while(flag){
    String str = buf.readLine() ;  // 接收客户端发送的内容
    if(str==null||"".equals(str)){ // 表示没有内容
     flag = false ; // 退出循环
    }else{
     if("bye".equals(str)){ // 如果输入的内容为bye表示结束
      flag = false ;
     }else{
      out.println("ECHO : " + str) ; // 回应信息
     }
    }
   }
   client.close() ;
  }
  server.close() ;
 }
};

 

客户端:

public class EchoClient{
 public static void main(String args[]) throws Exception { // 所有异常抛出
  Socket client = null ; // 表示客 户端
  client = new Socket("localhost",8888) ;
  BufferedReader buf = null ; // 一次性接收完成
  PrintStream out = null ; // 发送数据
  BufferedReader input = null ; // 接收键盘数据
  input = new BufferedReader(new InputStreamReader(System.in)) ;
  buf = new BufferedReader(new InputStreamReader(client.getInputStream())) ;
  out = new PrintStream(client.getOutputStream()) ;
  boolean flag = true ;  // 定义标志位
  while(flag){
   System.out.print("输入信息:") ;
   String str = input.readLine() ; // 接收键盘的输入信息
   out.println(str) ;
   if("bye".equals(str)){
    flag = false ;
   }else{
    String echo = buf.readLine() ; // 接收返回结果
    System.out.println(echo) ; // 输出回应信息
   }
  }
  buf.close() ;
  client.close() ;
 }
};

原创粉丝点击