`
行者买刀
  • 浏览: 191878 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

TCP实现局域网文件传输细节

F# 
阅读更多

         续上次讲过UDP传输文件,这次简要讲下关于TCP文件传输的发送端与接收端.tcp传输主要关键地方就是文件末尾的处理

        发送端代码:

  

private void sendFile(File f) throws Exception {
            oos.writeUnshared(f);
            oos.writeLong(f.length());
            FileInputStream fins = new FileInputStream(f);
            byte[] buf = new byte[8192];
            int size = 0;
            while ((size = fins.read(buf)) != -1) {
                oos.write(buf, 0, size);
            }
            System.out.println("发送方发送文件:" + f + " 完毕");
            oos.flush();
            fins.close();
        }

 

 

接收端代码:

  

 /**
     * 处理对方发过来的文件
     */
    private void doReceiveFile(String savePath) throws Exception {
        File f = (File) ois.readUnshared();//文件
        long len = ois.readLong();
        System.out.println("接收方  收到发送方的文件:" + f + "  文件大小:" + len);
        File file = new File(savePath, f.getName());
        if (!file.getParentFile().exists()) {
            file.getParentFile().mkdirs();
        }
        BufferedOutputStream fous = new BufferedOutputStream(new FileOutputStream(file));
        byte[] buffer = new byte[8192];
        int lengths = -1;//实现每次接收到的数组长度
        int accepts = 0;//当前已经传的文件长度
        int canRead = (int) (len - accepts - 8192 < 0 ? len - accepts : 8192);//处理文件末尾
        while ((lengths = ois.read(buffer, 0, canRead)) > 0) {
            fous.write(buffer, 0, lengths);
            accepts += lengths;
            canRead = (int) (len - accepts - 8192 < 0 ? len - accepts : 8192);
        }
        fous.close();
        System.out.println("接收方接收文件完毕");

    }

 

分享到:
评论

相关推荐

    飞球(feiq)局域网传输 聊天

    飞秋(FeiQ)是一款局域网聊天传送文件的绿色软件,它参考了飞鸽传书(IPMSG)和QQ, 完全兼容飞鸽传书(IPMSG)协议,具有局域网传送方便,速度快,操作简单的优点,同时具有QQ中的一些功能。 功能说明: - 飞秋(FeiQ)是一款...

    飞秋(FeiQ)局域网聊天传送文件的绿色软件

    - 飞秋(FeiQ)是一款局域网内即时通信软件, 基于 TCP/IP(UDP). - 完全兼容网上广为流传的飞鸽传书并比原来飞鸽功能更加强大. - 不需要服务器支持. - 支持文件/文件夹的传送 (支持大文件传送[4G以上]), 发送方和接收...

    局域网QQ软件-飞秋

    - 飞秋(FeiQ)是一款局域网内即时通信软件, 基于 TCP/IP(UDP). - 完全兼容网上广为流传的飞鸽传书并比原来飞鸽功能更加强大. - 不需要服务器支持. - 支持文件/文件夹的传送 (支持大文件传送[4G以上]), 发送方和接收...

    TCP-IP详解卷1:协议

    第21章 TCP的超时与重传 226 21.1 引言 226 21.2 超时与重传的简单例子 226 21.3 往返时间测量 227 21.4 往返时间RTT的例子 229 21.4.1 往返时间RTT的测量 229 21.4.2 RTT估计器的计算 231 21.4.3 慢启动 233 21.5 ...

    TCP/IP详解 卷1完整版

    作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也...

    TCP-IP详细协议

    第21章 TCP的超时与重传 226 21.1 引言 226 21.2 超时与重传的简单例子 226 21.3 往返时间测量 227 21.4 往返时间RTT的例子 229 21.4.1 往返时间RTT的测量 229 21.4.2 RTT估计器的计算 231 21.4.3 慢启动 233 21.5 ...

    TCP/IP详解卷 pdf格式

    第21章 TCP的超时与重传 226 21.1 引言 226 21.2 超时与重传的简单例子 226 21.3 往返时间测量 227 21.4 往返时间RTT的例子 229 21.4.1 往返时间RTT的测量 229 21.4.2 RTT估计器的计算 231 21.4.3 慢启动 233 21.5 ...

    TCP_IP协议详解卷一

    第21章 TCP的超时与重传 226 21.1 引言 226 21.2 超时与重传的简单例子 226 21.3 往返时间测量 227 21.4 往返时间RTT的例子 229 21.4.1 往返时间RTT的测量 229 21.4.2 RTT估计器的计算 231 21.4.3 慢启动 233 21.5 ...

    TCP-IP详解试题

    第21章 TCP的超时与重传 226 21.1 引言 226 21.2 超时与重传的简单例子 226 21.3 往返时间测量 227 21.4 往返时间RTT的例子 229 21.4.1 往返时间RTT的测量 229 21.4.2 RTT估计器的计算 231 21.4.3 慢启动 233 21.5 ...

    TCP/IP详解卷1:协议

    第21章 TCP的超时与重传 226 21.1 引言 226 21.2 超时与重传的简单例子 226 21.3 往返时间测量 227 21.4 往返时间RTT的例子 229 21.4.1 往返时间RTT的测量 229 21.4.2 RTT估计器的计算 231 21.4.3 慢启动 233 21.5 ...

    TCP/IP详解 卷1:协议--源代码

    第21章 TCP的超时与重传 226 21.1 引言 226 21.2 超时与重传的简单例子 226 21.3 往返时间测量 227 21.4 往返时间RTT的例子 229 21.4.1 往返时间RTT的测量 229 21.4.2 RTT估计器的计算 231 21.4.3 慢...

    TCP_IP详解卷1

    27.3.3 文本文件传输:NVT ASCII 表示还是图像表示 325 27.3.4 异常中止一个文件的传输: Telnet同步信号 326 27.3.5 匿名FTP 329 27.3.6 来自一个未知IP地址的匿名FTP 330 27.4 小结 331 第28章 SMTP:简单邮件传送...

    (TCP-IP详解卷1:协议.pdf

    第21章 TCP的超时与重传 226 21.1 引言 226 21.2 超时与重传的简单例子 226 21.3 往返时间测量 227 21.4 往返时间RTT的例子 229 21.4.1 往返时间RTT的测量 229 21.4.2 RTT估计器的计算 231 21.4.3 慢启动 233 21.5 ...

    TCP/IP详解part_2

    27.3.3 文本文件传输:NVT ASCII 表示还是图像表示 325 27.3.4 异常中止一个文件的传输: Telnet同步信号 326 27.3.5 匿名FTP 329 27.3.6 来自一个未知IP地址的匿名FTP 330 27.4 小结 331 第28章 SMTP:简单邮件传送...

    TCPIP详解--共三卷

    27.3.3 文本文件传输:NVT ASCII 表示还是图像表示 325 27.3.4 异常中止一个文件的传输: Telnet同步信号 326 27.3.5 匿名FTP 329 27.3.6 来自一个未知IP地址的匿名FTP 330 27.4 小结 331 第28章 SMTP:简单邮件传送...

    TCP/IP详解

    第21章 TCP的超时与重传 226 21.1 引言 226 21.2 超时与重传的简单例子 226 21.3 往返时间测量 227 21.4 往返时间RTT的例子 229 21.4.1 往返时间RTT的测量 229 21.4.2 RTT估计器的计算 231 21.4.3 慢启动 233 21.5 ...

    TCP/IP详解卷

    作者用Lawrence Berkeley实验室的tcpdump程序来捕获不同操作系统和TCP/IP实现之间传输的不同分组。对tcpdump输出的研究可以帮助理解不同协议如何工作。 本书适合作为计算机专业学生学习网络的教材和教师参考书。也...

    TCP-IP详解.卷三:TCP事务协议,HTTP,NNTP和UNIX域协议

    第21章 TCP的超时与重传 226 21.1 引言 226 21.2 超时与重传的简单例子 226 21.3 往返时间测量 227 21.4 往返时间RTT的例子 229 21.4.1 往返时间RTT的测量 229 21.4.2 RTT估计器的计算 231 21.4.3 慢启动 233 21.5 ...

Global site tag (gtag.js) - Google Analytics