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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  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. }
复制代码

4 个回复

倒序浏览
看一看啊啊啊
回复 使用道具 举报
这是java的代码?
回复 使用道具 举报
邓明 发表于 2014-12-15 10:57
这是java的代码?

哥们,是是干嘛的啊
回复 使用道具 举报
来学学 。。。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马