Java通过Socket文件流传输文本信息 和 文件

Java学习 专栏收录该内容
8 篇文章 0 订阅

传输文本信息
client.java 客户端

//client 接收端    Author:DarkFire
//创建隧道
ServerSocket server=new ServerSocket(9999);
//准备接收服务器信息
Socket socket=server.accept();//会阻断 可用新线程执行
//开始从服务端得到数据,将服务器的文件流传入in
FileInputStream in=(FileInputStream)scoket.getInputStream();
//若需要传输文本 可通过byte转String
//创建一个byte数组缓冲区 来打包数据
byte[] type=new byte[1024];
//将in的byte数据读入byte数组 并返回读入的个数
int length=in.read(type);
//创建一个新数组 来接收有效byte
byte[] types=new byte[1024];
for(int i=0;i<length;i++){
	types[i]=type[i];
}
//现在的types则存放的是由服务端传过来的文本byte数据
//byte数组转字符串
String textInfor=new String(types);
System.out.println(textInfor);

server.java 服务端

 //创建隧道
 Socket socket=new Socket("127.0.0.1",9999);
 //得到一个隧道的输出流 传出文件出口
 FileOutputStream outText=(FileOutPutStream)socket.getOutputStream();
 //将字符串转化为Byte数组
 byte[] textInfor="我是文本信息".getBytes("GBK");
 //开始传输文本信息  将byte数组写入到输出流中
 outText.Write(textInfor);

传输文件

//client 接收端    Author:DarkFire
//创建隧道
ServerSocket server=new ServerSocket(9999);
//准备接收服务器信息
Socket socket=server.accept();//会阻断 可用新线程执行
//开始从服务端得到数据,将服务器的文件流传入in
FileInputStream in=(FileInputStream)scoket.getInputStream();
//创建一个输入流,用来接收服务器的文件
FileOutputStream out=new FileOutputStream(new File("D:\\s.txt"));
//创建一个byte数组缓冲区 来打包数据
byte[] type=new byte[1024];
//将in的byte数据读入byte数组 并返回读入的个数
int length=in.read(type);
//用循环 循环接收byte信息
while(length!=-1){
   out.write(type,0,length);
   length=in.read(type);
}

server.java 服务端

 //创建隧道
 Socket socket=new Socket("127.0.0.1",9999);
 //得到一个隧道的输出流 传出文件出口
 FileOutputStream outFile=(FileOutPutStream)socket.getOutputStream();
 //输入文件
 FileInputStream inFile=new FileInputStream(new File("D://s1.txt"));
 byte[] bytes=new byte[1024];
 //将输入流(输入的文件字节)读入到type数组里 返回读入的长度
 int length=inFile.read(byte);
 while(length!=-1){
    outFile.Write(bytes,0,length);
    length=inFile.read(byte);
 }
 
  • 1
    点赞
  • 0
    评论
  • 0
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值