栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java实现客户端向服务器发送文件

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java实现客户端向服务器发送文件

本文实例为大家分享了java实现客户端向服务器发送文件的具体代码,供大家参考,具体内容如下

服务器源代码:

import java.io.BufferedReader; 
import java.io.File; 
import java.io.FileNotFoundException; 
import java.io.FileOutputStream; 
import java.io.IOException; 
import java.io.InputStream; 
import java.io.InputStreamReader; 
import java.net.ServerSocket; 
import java.net.Socket; 
  
 
 
public class ServerReceive { 
 
  public static void main(String[] args) { 
     
     
    ServerSocket ss = null; 
    Socket s = null; 
     
     
    File file = null; 
    FileOutputStream fos = null; 
     
     
    InputStream is = null; 
     
     
    byte[] buffer = new byte[4096 * 5]; 
     
     
    String comm = null; 
     
     
     
    try { 
      ss = new ServerSocket(4004); 
      s = ss.accept(); 
    } catch (IOException e) { 
      e.printStackTrace(); 
    } 
     
     
     
    try { 
      InputStreamReader isr = new InputStreamReader(s.getInputStream()); 
      BufferedReader br = new BufferedReader(isr); 
      comm = br.readLine(); 
    } catch (IOException e) { 
      System.out.println("服务器与客户端断开连接"); 
    } 
     
     
    int index = comm.indexOf("/#"); 
     
     
    String xieyi = comm.substring(0, index); 
    if(!xieyi.equals("111")){ 
      System.out.println("服务器收到的协议码不正确"); 
      return; 
    } 
     
     
    comm = comm.substring(index + 2); 
    index = comm.indexOf("/#"); 
    String filename = comm.substring(0, index).trim(); 
    String filesize = comm.substring(index + 2).trim(); 
     
     
     
    file = new File(filename); 
    if(!file.exists()){ 
      try { 
 file.createNewFile(); 
      } catch (IOException e) { 
 System.out.println("服务器端创建文件失败"); 
      } 
    }else{ 
       
      System.out.println("本路径已存在相同文件,进行覆盖"); 
    } 
     
     
     
     
     
    try { 
       
      fos = new FileOutputStream(file); 
      long file_size = Long.parseLong(filesize); 
      is = s.getInputStream(); 
       
      int size = 0; 
       
      long count = 0; 

       
      while(count < file_size){ 
  
 size = is.read(buffer); 
  
  
 fos.write(buffer, 0, size); 
 fos.flush(); 
  
  
 count += size; 
 System.out.println("服务器端接收到数据包,大小为" + size); 
      } 

    } catch (FileNotFoundException e) { 
      System.out.println("服务器写文件失败"); 
    } catch (IOException e) { 
      System.out.println("服务器:客户端断开连接"); 
    }finally{ 
       
      try { 
 if(fos != null) 
   fos.close(); 
      } catch (IOException e) { 
 e.printStackTrace(); 
      }//catch (IOException e) 
    }//finally 
 
  }//public static void main(String[] args) 
}//public class ServerReceive 

客户端源代码:

import java.io.File; 
import java.io.FileInputStream; 
import java.io.FileNotFoundException; 
import java.io.IOException; 
import java.io.OutputStream; 
import java.io.PrintStream; 
import java.net.Socket; 
 
 
 
 
public class ClientSend { 
 
  public static void main(String[] args) { 
     
     
    Socket s = null; 
     
     
    File sendfile = new File("API.CHM"); 
     
    FileInputStream fis = null; 
     
    byte[] buffer = new byte[4096 * 5]; 
     
     
    OutputStream os = null; 
     
     
     
    if(!sendfile.exists()){ 
      System.out.println("客户端:要发送的文件不存在"); 
      return; 
    } 
     
     
     
    try { 
      s = new Socket("127.0.0.1", 4004); 
    }catch (IOException e) { 
      System.out.println("未连接到服务器"); 
    } 
     
     
    try { 
      fis = new FileInputStream(sendfile); 
    } catch (FileNotFoundException e1) { 
      e1.printStackTrace(); 
    } 
 
     
     
    try { 
      PrintStream ps = new PrintStream(s.getOutputStream()); 
      ps.println("111/#" + sendfile.getName() + "/#" + fis.available()); 
      ps.flush(); 
    } catch (IOException e) { 
      System.out.println("服务器连接中断"); 
    } 
     
     
     
    try { 
      Thread.sleep(2000); 
    } catch (InterruptedException e1) { 
      e1.printStackTrace(); 
    } 
     
     
     
     
    try { 

       
      os = s.getOutputStream(); 

       
      int size = 0; 

       
      while((size = fis.read(buffer)) != -1){ 
 System.out.println("客户端发送数据包,大小为" + size); 
  
 os.write(buffer, 0, size); 
  
 os.flush(); 
      } 
    } catch (FileNotFoundException e) { 
      System.out.println("客户端读取文件出错"); 
    } catch (IOException e) { 
      System.out.println("客户端输出文件出错"); 
    }finally{ 

       
      try { 
 if(fis != null) 
   fis.close(); 
      } catch (IOException e) { 
 System.out.println("客户端文件关闭出错"); 
      }//catch (IOException e) 
    }//finally 
     
  }//public static void main(String[] args) 
}//public class ClientSend 

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持考高分网。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/142103.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号