• 需求: 客户端与服务端一问一答聊天。


    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.InetAddress;
    import java.net.Socket;
    
    /*
     需求: 客户端与服务端一问一答聊天。
     
     
     1.如果使用BuffrerdReader的readline方法一定要加上
    才把数据写出。
     2.使用字符流一定要调用flush方法数据才会写出。
     
     */
    
    
    //聊天的客户端
    public class ChatClient {
    
        public static void main(String[] args) throws IOException {
            //建立tcp的客户端服务
            Socket socket = new Socket(InetAddress.getLocalHost(),9090);
            //获取socket的输出流对象。
            OutputStreamWriter socketOut =    new OutputStreamWriter(socket.getOutputStream());
            //获取socket的输入流对象
            BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            
            //获取键盘的输入流对象,读取数据
            BufferedReader keyReader = new BufferedReader(new InputStreamReader(System.in));
            
            String line = null;
            //不断的读取键盘录入的数据,然后把数据写出
            while((line = keyReader.readLine())!=null){
                socketOut.write(line+"
    ");
                //刷新
                socketOut.flush();
                
                //读取服务端回送的数据
                line = socketReader.readLine();
                System.out.println("服务端回送的数据是:"+line);
            }
            //关闭资源
            socket.close();
        }
        
        
    }
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    /*
     聊天的服务端
     */
    public class ChatServer {
    
        public static void main(String[] args) throws IOException {
            //建立tcp的服务端
            ServerSocket serverSocket = new ServerSocket(9090);
            //接受客户端的连接,产生一个SOcket
            Socket socket = serverSocket.accept();
            //获取到Socket的输入流对象
            BufferedReader socketReader = new BufferedReader(new InputStreamReader(socket.getInputStream()));
            
            //获取到Socket输出流对象
            OutputStreamWriter socketOut =  new OutputStreamWriter(socket.getOutputStream());
            
            //获取键盘的输入流对象
            BufferedReader keyReader = new BufferedReader(new InputStreamReader(System.in));
            
            
            //读取客户端的数据
            String line = null;
            while((line = socketReader.readLine())!=null){
                System.out.println("服务端接收到的数据:"+ line);
                
                System.out.println("请输入回送给客户端的数据:");
                line = keyReader.readLine();
                socketOut.write(line+"
    ");
                socketOut.flush();
            }
            
            //关闭资源
            serverSocket.close();
        }
        
    }
  • 相关阅读:
    android:由URL载入中ImageView
    POI操作Excel详细解释,HSSF和XSSF两种方式
    深入了解jsonp解决跨域访问
    __declspec(novtable)keyword
    八十第五个冠军(复制和匹配的字符串)
    Canvas入门(3):图像处理和渲染文本
    创建位图画刷(CreatePatternBrush)
    MATLAB新手教程
    java io流之int数组数据的插入与取出
    随想录(从apple的swift语言说起)
  • 原文地址:https://www.cnblogs.com/xufengyuan/p/6422017.html
Copyright © 2020-2023  润新知