Tcp实现简单的大小写转换功能

有这样一个需求:

客户端给读物段发送文本,服务端会将文本转换为大写再返回客户端

而且客户端可以不断的进行文本转换,当客户端输入over时,转换结束。

 

分析:

既然是操作设备上的数据,那么久可以使用io技术,并按照io的操作规律来思考

源:键盘录入

目的:网络设备、网络输出流

而且操作的是文本数据,可以选择字符流

 

//客户端实现: 

package com.shindo.java.tcp;
import java.io.*;
import java.net.*;
/**
 * 步骤:
 * 1、建立服务
 * 2、获取键盘输入
 * 3、将数据发送给服务端
 * 4、获取服务端返回的数据
 * 5、结束,关闭资源
 * 都是文本数据,可以使用字符流进行操作,同时提高效率,加入缓冲
 */
public class TransClient {
    public static void main(String[] args){
        try {
            Socket s = new Socket("127.0.0.1",11013);
            //定义读取键盘输入的输入流对象
            BufferedReader bufr = new BufferedReader(new InputStreamReader(System.in));
            
            //定义目的,将数据写入到Socket的输出流,发给服务端
            //方法1:
//            BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
            //方法2:第二个参数为自动刷新的标志,true为自动刷新
            PrintWriter out = new PrintWriter(s.getOutputStream(),true);
            
            //定义一个Socket的读取流,读取服务端返回的大写信息
            BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
            
            String line = null;
            while((line = bufr.readLine()) != null){
                if("over".equals(line)) break;
    
                //方法1:
//                bufOut.write(line);
//                bufOut.newLine();//为了让流结束
//                bufOut.flush();//刷新缓冲区
                
                //方法2:
                out.println(line);
                
                String strBack = bufIn.readLine();
                System.out.println("服务端响应:" + strBack );
            }
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }
}
View Code

 

//服务端实现:

package com.shindo.java.tcp;
import java.io.*;
import java.net.*;
/**
 * 服务端
 * 流:Socket读取流
 * 目的:Socket输出流
 * 都是文本装饰
 */
public class TransServer {
    public static void main(String[] args){
        try {
            //获取客户端对象
            ServerSocket ss = new ServerSocket(11013);
            Socket s = ss.accept();
            
            //打印请求进来的客户端对象
            String ip = s.getInetAddress().getHostAddress();
            System.out.println(ip + "...... is connected");
            
            //读取Socket读取流中的数据
            BufferedReader bufIn = new BufferedReader(new InputStreamReader(s.getInputStream()));
            
            //目的Socket输出流,将大写数据写入Socket输出流,发给客户端
            //方法1:
//            BufferedWriter bufOut = new BufferedWriter(new OutputStreamWriter(s.getOutputStream()));
            
            //方法2:第二个参数为自动刷新的标志,true为自动刷新
            PrintWriter out = new PrintWriter(s.getOutputStream(),true);
            
            String line = null;
            while((line = bufIn.readLine())!= null){
                //打印客户端发送过来的数据
                System.out.println(line);
                
                //将数据转换为大写,然后发送给客户端
                //方法1:
//                bufOut.write(line.toUpperCase());
//                bufOut.newLine();
//                bufOut.flush();
                
                //方法2:
                out.println(line.toUpperCase());
                
                s.close();
                ss.close();
            }
            
            
            
            
            
        } catch (Exception e) {
            e.printStackTrace();
        }
        
    }
}
View Code

 

效果如图:

客户端:

 

服务端:

 

posted @ 2016-03-20 10:59  shindoyang  阅读(844)  评论(0编辑  收藏  举报