• Socket方法LAN多线程文件传输


    1.思维:为了实现各种文件的大小可以被发送和接收的,它可以被设置为发送和接收缓冲器环。并记录文件的位置读取,假设读入缓冲区的字节的特定数目大于缓冲区的大小较小。然后该文件被发送,退出发送周期,关闭连接。和Csocket它被阻止。收到发送端发送的全部内容,直到发送端连接关闭。接收端退出接收循环。

    //循环发送文件

    2.主要代码

    发送端:

    do
    {
    file.Seek(step,CFile::begin);
    over=file.Read(buffer,BUFFERSIZE);//文件读入缓冲
    err=sockClient.Send(buffer,over);
    if( BUFFERSIZE>over )
    break; //缓冲区的字节数小于缓冲区,也就是文件小于一个缓冲区,退出
    step+=err; //下一次从step開始读文件

    }while( true);

    sockClient.close();

    接收端:

    while( true )
    {
    finish=fileListen.Receive(buffer,BUFFERSIZE);
    if(0==finish)
    break;//client发送连接已经关闭,发送完成
    file.Write(buffer,finish);
    step+=finish;//写文件的位置
    }

    注意:合理设置缓冲区的大小,该方法是低效率,是不是更开放的线程可以增加速度?

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    OpenCV (一)图片读取、修改、保存
    用matplotlib进行数据分析(可视化)
    笔记
    vrpano
    四、threejs——模型交互
    三、threejs不显示英文就是乱码情况,中文解决方案
    二、GLTF模型支持
    一、threejs————灯光阴影
    node的httpserver简单创建
    em和rem区别
  • 原文地址:https://www.cnblogs.com/mfrbuaa/p/4732844.html
Copyright © 2020-2023  润新知