A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 帮助信息 中级黑马   /  2015-11-30 00:56  /  710 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. /*
  2. * 第十题:
  3.         使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器。
  4.         服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印。
  5. */
  6. import java.io.BufferedReader;
  7. import java.io.InputStreamReader;
  8. import java.io.PrintStream;
  9. import java.net.InetAddress;
  10. import java.net.Socket;
  11. import java.util.Scanner;

  12. public class Test10 {
  13.         public static void main(String[] args) throws Exception {
  14.                 Socket s = null; //实例化一个socket方法
  15.                 try {
  16.                         s = new Socket(InetAddress.getLocalHost(), 10010);//主机地址
  17.                                 BufferedReader client_buf = new BufferedReader( //缓冲字节流读取文件
  18.                                                 new InputStreamReader(s.getInputStream()));//!!!!!!!!!!!这一步是什么意思!!!!!!!!!!!!!!!!!!!!!
  19.            PrintStream pri = new PrintStream(s.getOutputStream());
  20.                                 Scanner sc = new Scanner(System.in);
  21.                                 System.out.println("请输入一个字符串:");
  22.                                 String str = sc.nextLine();
  23.                                 System.out.println("正在向服务器发送数据...");
  24.                                 pri.println(str);
  25.                                 System.out.println("接受来自服务器反转的字符串...");
  26.                                 System.out.println(client_buf.readLine());//打印反转之后对的字符串
  27.                 } catch (Exception e) {
  28.                         e.printStackTrace();
  29.                 } finally {  //finally,不论上面是否出现错误,都将执行其中的代码
  30.                         if (s != null) {
  31.                                 try {
  32.                                         s.close(); //关闭服务
  33.                                 } catch (Exception e) {
  34.                                         e.printStackTrace();
  35.                                 }
  36.                         }
  37.                 }
  38.         }
  39. }
复制代码
这只是客户端。    问题是代码中都是感叹号的那个

2 个回复

倒序浏览
本帖最后由 kunsongjack 于 2015-12-1 01:30 编辑
  1. BufferedReader client_buf = new BufferedReader(  new InputStreamReader(s.getInputStream()));
复制代码


这个是一个缓冲字符输入流. new BufferedReader( Reader reader),里面需要一个Reader类对象.  new InputStreamReader(InputStream is ) 是一个字节流通向字符流的桥梁,它是一个Reader类.  但是它的参数需要传入一个 InputStream类的对象.  s.getInputStream()返回的是一个InputStream类对象.因此将其作为了 参数放进了InputStreamReader类构造参数里面.
回复 使用道具 举报
客户端你也需要接受服务端返回的信息的啊,你没有流就接受不了。这就是接受服务端返回的信息,就是服务端的s.getOutputStream()
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马