基于TCP传输的大小写转换服务

/*

基于TCP传输的大小写转换服务

*/

客户端的建立。

public static void main(String[] args) throws UnknownHostException, IOException {

        //1,创建socket客户端对象,寻求与服务端的连接。

        Socket s = new Socket("192.168.1.100",10004);

        

        //2,获取键盘录入。 使用转换流和缓冲。

        BufferedReader bufr =  new BufferedReader(new InputStreamReader(System.in));

        

        //3,socket输出流。 true 自动刷新,避免存入缓冲区没有及时输出。也避免使用flush()方法刷新。此out流自动刷新。

        // 将socket输出流包装为打印流, 打印流内部使用socket 输出流,转换流和缓冲区。实现字符流到字节流的转换并提高效率。

        PrintWriter out = new PrintWriter(s.getOutputStream(),true);

        

        //4,socket输入流,读取服务端返回的大写数据。原理同上

        BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

        

         //频繁读写操作。

        String line = null;

        while((line=bufr.readLine())!=null){

            

            //结束标记

            if("over".equals(line))

                break;

         /* 使用printLn在 line后加换行,本 while 中,readLine读到换行符返回字符串,字符串不含换行符,

         * 服务端再此使用readLine进行循环读取时,字符串中已没换行符,导致readLine方法无法读到换行符

         * 而一直读取,无法返回数据

         * 此处使用printLn加换行符。

         */

            out.println(line);

            

            //读取服务端发回的一行大写数。

            String upperStr = bufIn.readLine();

            System.out.println(upperStr);

        }

        //键盘流不需要关闭。

        s.close();

    }

服务端的建立

        public static void main(String[] args) throws IOException {

        //1建立服务端 Socket,明确端口, 随时准备接入。服务端只提供端口。

        ServerSocket ss = new ServerSocket(10004);

        

        //2,获取接入的客户端socket对象。

        Socket s = ss.accept();

        

        //获取客户端ip. 此处 不必要,只为查明身份。

        String ip = s.getInetAddress().getHostAddress();

        System.out.println(ip+"......connected");

        

        //3,获取socket读取流,并装饰。

        BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));

        

        //4,获取socket的输出流,并装饰。使用true自动刷新

        PrintWriter out = new PrintWriter(s.getOutputStream(),true);

        

        //频繁的读写操作。

        String line = null;

        while((line=bufIn.readLine())!=null){

            

            System.out.println(line);

            //使用printLn 加换行符。切out自动刷新

            out.println(line.toUpperCase());

        }

// 服务端无需关闭。

        s.close();  

    }

猜你喜欢

转载自blog.csdn.net/qq_38003454/article/details/83241976