zoukankan      html  css  js  c++  java
  • 使用socket实现文件复制

    网络编程之文件长传下载:

    客户端:uploadClient.java:
    package fileupload;
    import java.awt.image.BufferedImageFilter;
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileInputStream;
    import java.io.IOException;
    import java.net.InetAddress;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    /**
     * 
     * @author superdrew
     *
     */
    public class UploadClient {
        public static void main(String[] args) throws UnknownHostException, IOException {
            //1.创建socket 与 server进行连接
            Socket socket = new Socket(InetAddress.getLocalHost(), 8888);
            
            //2.读取本地文件
            BufferedInputStream bis = new BufferedInputStream(new FileInputStream("C:/JDK_API_1_6_zh_CN.CHM"));
    
            //3.写入到网络中
            BufferedOutputStream bos = new BufferedOutputStream(socket.getOutputStream());
            
            //读取并写入到网络  中转站
            byte [] buf = new byte [1024];
            int len = 0;
            while( ( len = bis.read(buf))!=-1 ){
                //往网络中写
                bos.write(buf,0,len);
                //再次读取文件
                //len = bis.read(buf);
            }
            
            //4.关闭资源
            bos.close();
            bis.close();
        }
    }
    服务端:UploadServer.java:
    package fileupload;
    
    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    /**
     * 使用socket完成文件复制
     *     使用 tcp 
     *  udp 没有相关的IO流操作
     * 之间讲的文件复制   单机  只能本地到本地
     * 
     * @author superdrew
     *
     */
    public class UploadServer {
        public static void main(String[] args) throws IOException {
            //1.创建server 
            ServerSocket server = new ServerSocket(8888);
            
            //2.监听
            Socket socket = server.accept();
            
            //3.通过socket读取网络文件
            /*InputStream in = socket.getInputStream();
            BufferedInputStream bis = new BufferedInputStream(in);*/
            BufferedInputStream bis = new BufferedInputStream(socket.getInputStream());
            //4.写入到本地文件
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("C:/JDK_API_1_6_zh_CN2.CHM"));
            
            //5.边读边写
            //读取的中转站
            byte [] buf = new byte [1024];
            int len = 0;
            //len = bis.read(buf);
            while((len = bis.read(buf))!=-1){//组合式写法
                //写入到文件
                bos.write(buf, 0, len);
                //再次读取
                //len = bis.read(buf);
            }
            //关闭流
            bos.close();
            bis.close();
        }
    }
  • 相关阅读:
    java移位运算符详解[转]
    Android四大基本组件介绍与生命周期
    oracle中怎么得到日期相减除去周末后的天数
    小计_合计_统计
    Oracle--SQL技巧之一(查询连续的记录)
    游戏中地图的制作(一)
    在别的地方看的<<给程序员介绍一些C++开源库>>,记录给大家共同学习
    C语言调用python代码
    XML文件中怎么写小于号 等特殊符号
    system->copy 和 ShellExecute 用法
  • 原文地址:https://www.cnblogs.com/superdrew/p/8098368.html
Copyright © 2011-2022 走看看