网络编程
socket通信
socket被翻译为套接字,通过socket这种约定,一台计算机可以接收其他计算机的数据,也可以向其他计算机发送数据
如何实现呢
ServerSocket类能创建Socket的服务端,Socket能创建Socket的客户端
ServerSocket中的accept方法作用是监听并接受套接字的连接,该方法在连接前一直处于阻塞状态
方法的返回值是Socket类型
同样底层实现阻塞的还有InputStream类中的read()方法
通过Socket类的getInputStream()方法可以获得输入流对象,从输入流中获取从对方发送过来的数据
io流进阶
字节流本身没有缓冲区,缓冲字节流相对于字节流,效率提升非常高
字符流本身有缓冲区,所以缓冲字符流提升不明显
缓冲区效率高的原因是因为系统直接在内存对数据进行操作,非常快,普通流每次读写一个字节,而缓冲流在内存中设置一个缓冲数组,缓冲区先储存足够的代操作数据后,再与内存或者磁盘进行交互,这样就使得总数据量不变的情况下,减少了交互次数
节点流
直接操作数据读写的流类
处理流
对一个普通流的一个封装,使得功能更强大
将客户端传入的字符串,在服务端进行输出
客户端
服务端
在inputstream前面加上Buffered就是缓冲流了,该处理流参数是普通的字节流,也就是inputstream和outputstream
在inputstream后面加Reader就是字符输入流了,同样,在outputstream后面加Writer也就是字符输出流了,构造方法参数是Fileoutputstream和FileinputStream
字符流的便捷类
java提供了FileWriter和FileReader字符流的读写
new FIleWriter相当于 new OutputStreamWriter(new FileOutputStream(file,true))
字符缓冲流
BufferedReader和BufferedWriter是字符缓冲流