黑马程序员技术交流社区

标题: 关于TCP协议 [打印本页]

作者: 帮助信息    时间: 2015-11-30 00:56
标题: 关于TCP协议
  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. }
复制代码
这只是客户端。    问题是代码中都是感叹号的那个


作者: kunsongjack    时间: 2015-12-1 01:28
本帖最后由 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类构造参数里面.
作者: meihua    时间: 2015-12-1 13:06
客户端你也需要接受服务端返回的信息的啊,你没有流就接受不了。这就是接受服务端返回的信息,就是服务端的s.getOutputStream()




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2