- //创建客户端
- class TcpSocketDemo
- {
- public static void main(String[] args) throws Exception
- {
- //创建Socket服务 并指定地址和端口
- Socket sok=new Socket("192.168.1.106",8888);
-
- //建立键盘录入高效操作流
- BufferedReader bufr=
- new BufferedReader(new InputStreamReader(System.in));
- //获取Socket服务的输入流对象,并装饰 用于高效操作数据
- BufferedReader bufIn=
- new BufferedReader(new InputStreamReader(sok.getInputStream()));
- //获取Socket服务的输出流对象,并装饰
- BufferedWriter bufOut=
- new BufferedWriter(new OutputStreamWriter(sok.getOutputStream()));
- String line=null;
- //遍历 将数据存储进临时缓冲区line中 将获取到的数据不等于null作为判断条件
- while((line=bufr.readLine())!=null)
- {
- //将数据发送到服务端
- bufOut.write(line);
- bufOut.newLine();//获取一行数据的回车键
- //数据在缓冲区中 所以要刷新
- bufOut.flush();
- //作为结束的标记
- if("voer".equals(line))
- break;
- //将服务端返回的反转数据接收 并进行打印
- String str=bufIn.readLine();
- System.out.println("服务端的数据="+str);
-
- }
- //关闭资源
- bufr.close();
- sok.close();
- }
- }
- //建立服务端
- class TcpServerDemo
- {
- public static void main(String[] args) throws Exception
- {
- //建立服务端的ServerSocket服务 并监听一个端口
- ServerSocket ss=new ServerSocket(8888);
-
- //获取客户端的Socket
- Socket s=ss.accept();
- //获取客户端的输入流 并进行装饰
- BufferedReader bufIn=
- new BufferedReader(new InputStreamReader(s.getInputStream()));
-
- //获取客户端的输出流 并进行装饰
- BufferedWriter bufOut=
- new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
- //建立一个反转数据的容器
- StringBuilder sb=new StringBuilder();
-
- String line=null;
- //接收客户端的数据 进行临时存储
- while((line=bufIn.readLine())!=null)
- {
- if("over".equals(line))
- break;
-
- //将从客户端接收的数据 存储进反转数据的容器
- //再调用容器中的reverse方法将数据反转
- sb.append(line);
- sb.reverse();
- //将反转后的数据返回给客户端
- bufOut.write(sb.toString());
- bufOut.newLine();
- bufOut.flush();
- //将容器操作后的数据清空
- sb.delete(0,sb.length());
- }
- s.close();
- ss.close();
- }
- }
复制代码 |
|