Advertisement

TCP 从客户端键入信息 循环接收发送 示例

阅读量:

当服务器端的监听在 循环里面的时候 发现 不正正常接收客户端的信息
把监听accept放在循环外面却可以,刚学到这里,不是很理解!
大神路过帮忙解答下,谢谢!

复制代码
    public class TcpClient {
    public static void main(String[] args) {
        //创建套接字
        Socket s = null;
        //创建键入字符流
        BufferedReader reader = null;
        //创建输出字符流
        BufferedWriter writer = null;
    
        try {
            //实例化套接字
            s = new Socket("127.0.0.1",10011);
            System.out.println("TCP 已启动 请输出您要发送的信息......");
            //获得此套接字输出流
            OutputStream out = s.getOutputStream();
            //实例化输入流
            reader = new BufferedReader(new InputStreamReader(System.in));
            //实例化输出流
            writer = new BufferedWriter(new OutputStreamWriter(out));
            //保存读入信息
            String line = null;
            while (true){
    
                line = reader.readLine();
                writer.write(line);
                writer.newLine();
                writer.flush();
    
                if (line.equals("exit")){
                    break;
                }
    
                System.out.println("循环被执行了");
            }
            System.out.println("TCP 客户端结束运行!");
    
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
                if (s != null){
                    s.close();
                }
                if (writer != null){
                    writer.close();
                }
                if (reader != null){
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    }
    
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    
复制代码
    public class TcpServer {
    public static void main(String[] args) {
        //创建服务端套接字
        ServerSocket ss = null;
        //创建缓冲字符流
        BufferedReader reader = null;
        try {
            //实例化套接字并绑定端口
            ss = new ServerSocket(10011);
            System.out.println("TCP 服务已经启动......");
            //监听客户端对象
            Socket s = ss.accept();
            System.out.println("连接成功......");
    
            //获得客服端套接字的输入流对象
            InputStream in = s.getInputStream();
            //装换成缓冲字符流
            reader = new BufferedReader(new InputStreamReader(in));
    
            //获取客户端ip地址
            InetAddress inetAddress = s.getInetAddress();
            String hostAddress = inetAddress.getHostAddress();
    
            while (true) {
                //读取输入流
                String line = reader.readLine();
    
                //设置退出信号
                if (line.equals("exit")){
                    break;
                }
                System.out.println(hostAddress + " 发送了:" + line);
            }
            System.out.println("TCP 服务结束运行!");
    
        } catch (IOException e) {
            e.printStackTrace();
        }finally {
            try {
               if (ss !=null){
                    ss.close();
                }
                if (reader != null){
                    reader.close();
                }
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    }
    
    
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
    

全部评论 (0)

还没有任何评论哟~