在网络编程中的TCP传输里,拿到Socket的源后,应该怎么进行读写操作呢,下面我列举了两种方法,希望大家帮忙补充····

1.利用byte数组作为一个缓冲区进行读写

客户端上传

 1 //获取socket流,将图片上传给服务端
 2         FileInputStream fis=new FileInputStream("c:\\12.jpg");
 3
 4         //获取了输出流
 5         OutputStream out=s.getOutputStream();
 6
 7         //用数组作为缓冲
 8         byte[]buf=new byte[1024];
 9
10         //len用来记录长度
11         int len=0;
12
13         //循环读写
14         while((len=fis.read(buf))!=-1){
15             //当返回-1时表示读完毕,此时len为总长度
16             out.write(buf,0,len);
17         }

//服务端接收时

 1 InputStream in=s.getInputStream();
 2 File dir=new File("c:\\pic");
 3         if(!dir.exists()){
 4             dir.mkdirs();
 5         }
 6 FileOutputStream fos=new FileOutputStream("server.jpg");
 7 byte[] buf=new byte[1024];
 8         int len=0;
 9         while((len=in.read())!=-1){
10             fos.write(buf,0,len);
11         }
12         

 服务端接收(不需要写入文件中时)

1 byte [] buf=new byte[1024];
2         //此时只需要或取长度就可以了
3         int len=in.read(buf);
4         //直接用数组获取文本就可以了
5         String text=new String(buf,0,len);

2.使用缓冲区作为缓冲

 1       //客户端上传

        //使用流输出数据       BufferedReader bufr=new BufferedReader(new         FileReader("client.txt"));
 2
 3         //通过使用PrintWriter对字节流和字符流进行处理,接管流
 4         PrintWriter out =new PrintWriter(s.getOutputStream(),true);
 5
 6         //开始读取,上传给服务端
 7         String line=null;
 8         while((line=bufr.readLine())!=null){
 9             out.println(line);
10         }        

 1       //服务端接收

        //将接收的数据放入流中
 2         BufferedReader bufIn=
 3                 new BufferedReader(new InputStreamReader(s.getInputStream()));
 4
 5         //指定要写入得文件
 6         BufferedWriter bufw=new BufferedWriter(new FileWriter("server.txt"));
 7
 8         //开始读取
 9         //缓冲区的默认大小为8k,一到8k则会自动刷新,若没有结束标志,则得到的文件大小一定是8的倍数
10         String line=null;
11         while((line=bufIn.readLine())!=null){
12             if("over".equals(line))
13                 break;
14             bufw.write(line);
15             bufw.newLine();
16             //自己写刷新
17             bufw.flush();
18         }
19         

转载于:https://www.cnblogs.com/Liang-Blog/p/5624859.html

java网络编程TCP传输—流操作—拿到源后的写入动作相关推荐

  1. 【Java网络编程与IO流】Java之Java Servlet详解

    Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...

  2. 【Java网络编程与IO流】Java中IO流分为几种?字符流、字节流、缓冲流、输入流、输出流、节点流、处理流

    Java网络编程与IO流目录: [Java网络编程与IO流]Java中IO流分为几种?字符流.字节流.缓冲流.输入流.输出流.节点流.处理流 [Java网络编程与IO流]计算机网络常见面试题高频核心考 ...

  3. Java网络编程 ---- TCP 网络通信编程

    视频:[零基础 快速学Java]韩顺平 零基础30天学会Java 文章目录 1. Socket 2. TCP 网络通信编程 3. 应用案例 1(使用字节流) 4. 应用案例 2(使用字节流) 5. 应 ...

  4. java网络编程--TCP程序设计

    一,本章目标 了解Socket和ServerSocker类的作用 掌握ECHO程序开发 将多线程应用在TCP程序上实现多用户操作 二,具体内容 在java网络程序中,客户端只要符合连接的通讯协议,那么 ...

  5. Java网络编程---TCP通信

    TCP通信协议是一种可靠的网络协议,它在通信的两端各建立一个Socket对象,从而在通信两端形成网络虚拟链路,一旦建立了虚拟的网络链路,两端的程序就可以通过虚拟链路进行通信 Java对基于TCP协议的 ...

  6. 【Java网络编程与IO流】Http协议详解以及面试有关问题

    HTTP协议详解以及面试有关题目 1 HTTP请求 一个HTTP请求报文由请求行.请求头部.空行和请求数据四个部分组成. 1.1 请求行 请求行中有请求方法字段.URL字段和HTTP协议版本3个字段组 ...

  7. Java网络编程 - TCP通信

    文章目录 TCP通信 快速入门(一发一收) 编写客户端代码 编写服务器代码 多发多收 多发多收(同时接受多个客户端) 线程池优化 TCP通信 快速入门(一发一收) TCP协议回顾: TCP是一种面向连 ...

  8. java网络编程 TCP程序

    在java中,使用Socket完成TCP(传输控制协议)程序开发,使用此类可以方便地建立可靠的,双向的,持续的,点对点通信连接 服务端: ServerSocket    程序段:Socket Serv ...

  9. java网络编程-- 文件传输

    客户端发送 package cn.usts.edu.lesson03;import java.io.*; import java.net.InetAddress; import java.net.So ...

最新文章

  1. python3+ 解决写入中文乱码的问题
  2. 《Pro ASP.NET MVC 3 Framework》学习笔记之十六【示例项目SportsStore】
  3. Ajax异步中文数据处理
  4. 模式识别,计算机视觉,计算机图形学,智能控制,信号处理,语音识别,知识处理,机器学习,数据挖掘领域区别
  5. 单片机 c语言 按键长按短按,求助:单片机一键长按与短按按键实现的c程序有问题...
  6. 用HttpListener做web服务器,简单解析post方式过来的参数、上传的文件
  7. 为什么需要用户自定义类加载器及具体实现
  8. 职场警示录:怎样和“小人”和睦相处
  9. flink on yarn模式下释放flink占用yarn的资源
  10. 朴素贝叶斯趣味挑战项目
  11. Hbase 2.0 RegionObserver使用
  12. TypeError: ‘NoneType‘ object is not callable--python报错解决办法
  13. 自动放大_放大招!滴滴自动驾驶汽车通过图灵测试,quot;车技quot;不输老司机...
  14. move.js操作CSS3动画
  15. IncDec Sequence(差分)
  16. 从一个组件的实现来深刻理解 JS 中的继承
  17. Qt Quick核心编程
  18. 赤菟CH32V307 RISC-V 开发板 rt-thread 的坑 - esp8266的使用
  19. 【项目管理】Java OCR实现图片文字识别
  20. python 读xlsx文件数据_Python读取xlsx文件的实现方法

热门文章

  1. 漫步最优化十三——驻点
  2. Pytorch+Tensorboard混淆矩阵可视化
  3. leetcode - 104. 二叉树的最大深度
  4. tensorflow 十四 强化学习Q-learning
  5. matlab用解析法求二自由度阻尼系统的自由振动(先求系统状态方程
  6. pandas.describe()参数的意义
  7. Levmar使用小结
  8. SSH框架整合——基于注解
  9. 嵌入式linux 零基础-实践起步 --- 003 --- 交叉编译中环境变量PATH的设定
  10. java script 月日年转年月日_javasrcipt日期一些方法和格式转化