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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

题目:
          建立客户端与服务端,客户端接收用户输入的数据,发送给服务端。
           服务端将接收到的数据进行反转,并发送给客户端。
                  注意;用户可以一直输入数据,并接收翻转后的数据。否则无效。

客户端代码:
  1. package com.itheima_1;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.OutputStreamWriter;
  7. import java.net.Socket;

  8. /*
  9. *  题目二:
  10. *          建立客户端与服务端,客户端接收用户输入的数据,发送给服务端。
  11. *          服务端将接收到的数据进行反转,并发送给客户端。
  12. *                 注意;用户可以一直输入数据,并接收翻转后的数据。否则无效。
  13. *
  14. */
  15. public class ClientDemo {
  16.         public static void main(String[] args) throws IOException {

  17.                 // 创建发送端Socket对象
  18.                 Socket s = new Socket("192.168.1.109", 10010);

  19.                 q: while (true) {
  20.                         // 封装键盘录入
  21.                         BufferedReader br = new BufferedReader(new InputStreamReader(
  22.                                         System.in));
  23.                         // 把通道内的输出流封装为字符流
  24.                         BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
  25.                                         s.getOutputStream()));
  26.                         String line = null;
  27.                         while ((line = br.readLine()) != null) {
  28.                                 // 发送数据
  29.                                 bw.write(line);
  30.                                 // 换行
  31.                                 bw.newLine();
  32.                                 // 刷新数据
  33.                                 bw.flush();

  34.                                 // 判断结束标记
  35.                                 if (line.equals("over")) {
  36.                                         break q;
  37.                                 }

  38.                                 // 获取服务端发回的数据
  39.                                 BufferedReader brReader = new BufferedReader(
  40.                                                 new InputStreamReader(s.getInputStream()));
  41.                                 String str = null;
  42.                                 while ((str = brReader.readLine()) != null) {
  43.                                         // 将服务端发过来的数据输出到控制台
  44.                                         System.out.println(str);
  45.                                         break;
  46.                                 }

  47.                         }

  48.                 }
  49.                 // 关闭资源
  50.                 s.close();

  51.         }
  52. }
复制代码



服务端代码:
  1. package com.itheima_1;

  2. import java.io.BufferedReader;
  3. import java.io.BufferedWriter;
  4. import java.io.IOException;
  5. import java.io.InputStreamReader;
  6. import java.io.OutputStreamWriter;
  7. import java.net.ServerSocket;
  8. import java.net.Socket;


  9. public class ServerDemo {
  10.         public static void main(String[] args) throws IOException {
  11.                 // 创建服务端对象,并指定好端口
  12.                 ServerSocket ss = new ServerSocket(10010);

  13.                 q: while (true) {
  14.                         // 监听客户端连接
  15.                         Socket s = ss.accept();

  16.                         // 对通道内的数据进行包装
  17.                         BufferedReader br = new BufferedReader(new InputStreamReader(
  18.                                         s.getInputStream()));
  19.                         String line = null;
  20.                         while ((line = br.readLine()) != null) {
  21.                                 // 判断结束标记
  22.                                 if (line.equals("over")) {
  23.                                         break q;
  24.                                 }

  25.                                 // 将得到的数据反转
  26.                                 String data = reverseString(line);
  27.                                 // 将反转后的数据发送给客户端
  28.                                 BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
  29.                                                 s.getOutputStream()));
  30.                                 bw.write("Server: " + data);
  31.                                 bw.newLine();
  32.                                 bw.flush();

  33.                         }
  34.                 }
  35.                 // 释放资源
  36.                 ss.close();
  37.         }

  38.         // 数据反转方法
  39.         private static String reverseString(String line) {

  40.                 StringBuffer sb = new StringBuffer(line.length());

  41.                 for (int i = line.length() - 1; i >= 0; i--) {
  42.                         char c = line.charAt(i);
  43.                         sb.append(c);
  44.                 }

  45.                 return sb.toString();
  46.         }
  47. }
复制代码



1 个回复

正序浏览
怎么建立连接 我的建立的不对
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马