黑马程序员技术交流社区

标题: 黑马测试题---tcp协议客户端和服务器端对话 [打印本页]

作者: 小马范    时间: 2014-12-8 20:40
标题: 黑马测试题---tcp协议客户端和服务器端对话
  1. import java.io.BufferedReader;
  2. import java.io.InputStreamReader;
  3. import java.io.PrintWriter;
  4. import java.net.ServerSocket;
  5. import java.net.Socket;

  6. /*
  7. * @author Xiaoma
  8. * 第十题:
  9. * 使用TCP协议完成一个客户端一个服务器。客户端从键盘输入读取一个字符串,发送到服务器
  10. * 服务器接收客户端发送的字符串,反转之后发回客户端。客户端接收并打印
  11. */

  12. //服务器端代码
  13. public class Test10 {
  14.         public static void main(String[] args) throws Exception {
  15.                 try {
  16.                         ServerSocket ss = null;
  17.                         try {
  18.                                 ss = new ServerSocket(10003);
  19.                         } catch (Exception e) {
  20.                                 System.out.println("定义服务器端口有误");
  21.                         }

  22.                         Socket s = null;
  23.                         try {
  24.                                 s = ss.accept();
  25.                         } catch (Exception e) {
  26.                                 System.out.println("没有正确对接客户端");
  27.                         }

  28.                         // 获取客户端的ip地址且打印出来
  29.                         String ip = s.getInetAddress().getHostAddress();
  30.                         System.out.println(ip + ".....conneted");
  31.                         String line;
  32.                         // 获取服务器端的输入流
  33.                         BufferedReader bufin = new BufferedReader(new InputStreamReader(
  34.                                         s.getInputStream()));

  35.                         // 获取客户端套接字的输出流
  36.                         PrintWriter pw = new PrintWriter(s.getOutputStream());
  37.                         BufferedReader buf = new BufferedReader(new InputStreamReader(
  38.                                         System.in));

  39.                         System.out.println("Client+: " + bufin.readLine());
  40.                         line = buf.readLine();
  41.                         /*
  42.                          * 对服务器端录入的数据进行判断,如果是bye则结束,否则写到输出流,且打印服务器内容,因为readLine()是阻塞式方法,
  43.                          * 等客户端写入收后,服务器收 读取到客户端的内容后,再读取服务器内容进行再次循环
  44.                          */
  45.                         while (!line.equals("bye")) {
  46.                                 pw.println(line);
  47.                                 pw.flush();
  48.                                 System.out.println("Server:" + line);
  49.                                 System.out.println("Client:" + bufin.readLine());
  50.                                 line = buf.readLine();
  51.                         }
  52.                         buf.close();
  53.                         s.close();
  54.                         s.close();
  55.                         ss.close();
  56.                 } catch (Exception e) {
  57.                         System.out.println("服务器端代码出现问题");
  58.                 }

  59.         }
  60. }

  61. // 客户端代码
  62. class tcpSocketDemo {
  63.         public static void main(String[] args) throws Exception {
  64.                 try {
  65.                         Socket s = null;
  66.                         try {
  67.                                 s = new Socket("192.168.0.103", 10003);
  68.                         } catch (Exception e) {
  69.                                 System.out.println("没有正确连接到服务器");
  70.                         }

  71.                         BufferedReader buf = new BufferedReader(new InputStreamReader(
  72.                                         System.in));
  73.                         // 获取客户端套接字的输出流
  74.                         // BufferedWriter bufout = new BufferedWriter(new
  75.                         // OutputStreamWriter(s.getOutputStream()));
  76.                         PrintWriter pw = new PrintWriter(s.getOutputStream());
  77.                         // 获取客户端套接字的输入流
  78.                         BufferedReader bufin = new BufferedReader(new InputStreamReader(
  79.                                         s.getInputStream()));
  80.                         String str;
  81.                         str = buf.readLine();
  82.                         /*
  83.                          * 对客户端录入的数据进行判断,如果是bye则结束,否则写到输出流(即服务端的输入流),且打印录入的内容,因为readLine()是阻塞式方法
  84.                          * , 等服务器读取到数据后,客户端读取到服务器的内容后继续执行,再读取客户端内容进行再次循环
  85.                          */
  86.                         while (!str.equals("bye")) {
  87.                                 pw.println(str);
  88.                                 pw.flush();
  89.                                 System.out.println("Client:" + str);
  90.                                 System.out.println("Server:" + bufin.readLine());
  91.                                 str = buf.readLine();
  92.                         }
  93.                         pw.close();
  94.                         bufin.close();
  95.                         s.close();
  96.                 } catch (Exception e) {
  97.                         System.out.println("客户端代码出现问题");
  98.                 }

  99.         }
  100. }
复制代码

作者: 禾青青    时间: 2014-12-8 23:43
看一看啊啊啊
作者: 邓明    时间: 2014-12-15 10:57
这是java的代码?
作者: 小马范    时间: 2014-12-15 22:07
邓明 发表于 2014-12-15 10:57
这是java的代码?

哥们,是是干嘛的啊
作者: 斷灬dian    时间: 2014-12-23 19:18
来学学 。。。




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