你好,欢迎来到电脑编程技巧与维护杂志社! 杂志社简介广告服务读者反馈编程社区  
合订本订阅
 
 
您的位置:杂志经典 / 跟高手学编程
Java网络编程入门(十八)
 

private PrintWriter getWriter(Socket socket)throws IOException{

    OutputStream socketOut = socket.getOutputStream();

    return new PrintWriter(socketOut,true);

  }

  private BufferedReader getReader(Socket socket)throws IOException{

    InputStream socketIn = socket.getInputStream();

    return new BufferedReader(new InputStreamReader(socketIn));

  }

  public void talk()throws IOException {

    try{

      BufferedReader br=getReader(socket);

      PrintWriter pw=getWriter(socket);

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

      String msg=null;

      while((msg=localReader.readLine())!=null){

 

        pw.println(msg);

        System.out.println(br.readLine());

 

        if(msg.equals("bye"))

          break;

      }

    }catch(IOException e){

       e.printStackTrace();

    }finally{

       try{socket.close();}catch(IOException e){e.printStackTrace();}

    }

  }

}

EchoClient类中,最主要的方法为talk()方法。该方法不断读取用户从控制台输入的字符串,然后把它发送给EchoServer,再把EchoServer返回的字符串打印到控制台。如果用户输入的字符串为“bye”,就会结束与EchoServer的通信,调用socket.close()方法断开连接。

运行范例时,需要打开两个DOS界面,先在一个DOS界面中运行“java EchoServer”命令,再在另一个DOS界面中运行“java EchoClient”命令。图19显示了运行这两个程序的DOS界面。在EchoClient控制台,用户输入字符串“hi”,程序就会输出“echo:hi”。


19  运行EchoServerEchoClient程序

EchoServer程序的service()方法中,每当serverSocket.accept()方法返回一个Socket对象,就表示建立了与一个客户的连接,这个Socket对象中包含了客户的地址和端口信息,只需调用Socket对象的。getInetAddress()getPort()方法就能分别获得这些信息:

 socket = serverSocket.accept();  //等待客户连接

 System.out.println("New connection accepted "

                +socket.getInetAddress() + ":" +socket.getPort());

  推荐精品文章

·2024年12月目录 
·2024年11月目录 
·2024年10月目录 
·2024年9月目录 
·2024年8月目录 
·2024年7月目录 
·2024年6月目录 
·2024年5月目录 
·2024年4月目录 
·2024年3月目录 
·2024年2月目录 
·2024年1月目录
·2023年12月目录
·2023年11月目录

  联系方式
TEL:010-82561037
Fax: 010-82561614
QQ: 100164630
Mail:gaojian@comprg.com.cn

  友情链接
 
Copyright 2001-2010, www.comprg.com.cn, All Rights Reserved
京ICP备14022230号-1,电话/传真:010-82561037 82561614 ,Mail:gaojian@comprg.com.cn
地址:北京市海淀区远大路20号宝蓝大厦E座704,邮编:100089