zoukankan      html  css  js  c++  java
  • 《java入门第一季》之tcp协议下的编程实现键盘录入数据不断地往服务器端发送数据案例

    这里要封装通道流,封装键盘录入数据流。

    同样地,还是两台电脑。一个客户端,一个服务器。

    客户端代码:

    import java.io.BufferedReader;
    import java.io.BufferedWriter;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.io.OutputStreamWriter;
    import java.net.Socket;
    
    /*
     * 客户端键盘录入,服务器输出到控制台
     */
    public class ClientDemo {
    	public static void main(String[] args) throws IOException {
    		// 创建客户端Socket对象
    		Socket s = new Socket("192.168.1.105", 22222);//这里的地址是服务器端的IP地址和端口号
    
    		// 键盘录入数据
    		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    		// 把通道内的流给包装一下
    		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(
    				s.getOutputStream()));//在这里bw的功能相当于原来OutputStream os = s.getOutputStream;中的os
    
    		String line = null;
    		while ((line = br.readLine()) != null) {
    			// 键盘录入数据要自定义结束标记,如果不定义则客户端永远不会停止下来。
    			if ("886".equals(line)) {
    				break;
    			}
    			bw.write(line);//BufferedWriter封装字符流写入数据的时候,一定要带着换行才满足一行一行的写入。最后写完数据也不要忘记flush()保证数据的 写入
    			bw.newLine();
    			bw.flush();
    		}
    
    		// 释放资源
    		// bw.close();//socket关闭了,(封装的)bw也会自动关闭所以不用谢bw.close();
    		// br.close();//键盘自定义录入结束了,已经没了键盘录入,所以br也早就关闭可以不写br.colse。这里是键盘录入封装起来的
    		s.close();
    	}
    }
    
    服务端代码:

    package cn.itcast_08;
    
    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    public class ServerDemo {
    	public static void main(String[] args) throws IOException {
    		// 创建服务器Socket对象
    		ServerSocket ss = new ServerSocket(22222);
    
    		// 监听客户端连接
    		Socket s = ss.accept();
    
    		// 包装通道内容的流
    		BufferedReader br = new BufferedReader(new InputStreamReader(
    				s.getInputStream()));
    		String line = null;
    		while ((line = br.readLine()) != null) {
    			System.out.println(line);
    		}
    
    		// br.close();//s关闭了br就跟着关闭了
    		s.close();
    		// ss.close();//服务器不用关闭
    	}
    }
    



  • 相关阅读:
    知识积累
    来西安对吗
    python循环语句---------while、for
    postman接口功能测试
    Laravel环境搭建
    Vue
    搭建Vue.js环境
    Atom
    PHP
    thinkphp-无限分类下根据任意部门获取顶级部门ID
  • 原文地址:https://www.cnblogs.com/wanghang/p/6299731.html
Copyright © 2011-2022 走看看