客户端-服务端交互

来源:互联网 发布:上海软件协会 编辑:程序博客网 时间:2024/06/06 00:27

package com.itheima;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.ServerSocket;import java.net.Socket;public class Server {/** *   * 思路及步骤:(注意:本题为增强阅读性,让代码看起来简洁,对异常不作try{}catch(){}处理。) * 1.预先定义一个用于反转字符串的函数; * 2.建立服务,并侦听一个端口; * 3.获取客户端对像; * 4.通过客户对像获取到客户端的读取流对像; * 5.读取客户端发送过来的数据,并调用预先定义好的反转字符串的功能,将读到的字符反转; * 6.通过客户对像获取到客户端的输出流对像,并将反转后的字符串发送给客户端; * 7.关闭客户端和服务端(因为本题服务端只涉及到向客户端发送一次数据,所以服务端也要关闭)。 */public static void main(String[] args)throws Exception {//建立服务,并侦听一个端口ServerSocket ss = new ServerSocket(10002);Socket s = ss.accept();BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));//5.读取客户端发送过来的数据,并调用预先定义好的反转字符串的功能,将读到的字符反转String data = reverseString(bufIn.readLine());PrintWriter pwOut = new PrintWriter(s.getOutputStream(),true);pwOut.println(data);s.close();ss.close();}//定义一个反转字符串的功能。public static String reverseString(String str){char[] chs = str.toCharArray();int end = chs.length-1;for(int start=0; start<=end; start++,end--){swap(chs,start,end);}return new String(chs);}//置换字符数组角标的位置。public static void swap(char[] arr,int start,int end){char temp = arr[start];arr[start] = arr[end];arr[end] = temp;}}package com.itheima;import java.io.BufferedReader;import java.io.InputStreamReader;import java.io.PrintWriter;import java.net.InetAddress;import java.net.Socket;public class Client {/** * 思路及步骤:(注意:本题为增强阅读性,让代码看起来简洁,对异常不作try{}catch(){}处理。) * 1.建立客户端服务,并指定要连接的主机和端口; * 2.读取键盘录入; * 3.获取输出流对像,并将键盘录入读取到的数据发送到服务端去; * 4.获取读取流对像,等待读取服务端发送过来的数据; * 5.将服务端发送过来的数据打印; * 6.关闭客户端。 */public static void main(String[] args)throws Exception {Socket s = new Socket(InetAddress.getLocalHost(),10002);BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));String line = bufr.readLine();//获取输出流对像,并将键盘录入读取到的数据发送到服务端去PrintWriter pw = new PrintWriter(s.getOutputStream(),true);pw.println(line);//获取读取流对像,等待读取服务端发送过来的数据BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));String data = bufIn.readLine();//将服务端发送过来的数据打印System.out.println(data);s.close();}}


0 0