Socket 实现非阻塞式多线程文件传输(jpg mov 等各种格式)
Socket 基础
非阻塞式TCP socket
实现文件传输,
实测 传输5M的jpg , 30M的 NEF(单反原图) 以及 1G以上的mov文件,均正常接收
客户端可多开,服务器多线程实现服务器一对多
http://qzher.com/?p=642
服务器部分:
#define _WINSOCK_DEPRECATED_NO_WARNINGS
#include <WinSock2.h>
#pragma comment(lib, "ws2_32.lib")
#include <stdio.h>
#include <thread>
#define BUF_SIZE 1024
#include <iostream>
void connThread(SOCKET sock)
{
char chBuf[1024];
int nRes = 0;
std::FILE* f;
errno_t err;
err = fopen_s(&f, "G:\\qzher_3249.MOV", "rb");
//err = fopen_s(&f, "G:\\qzher_3165.NEF", "rb");
//err = fopen_s(&f, "G:\\qzher_3052.jpg", "rb");
UINT64 nFileLen = 0;
if (err == 0)
{
fseek(f, 0L, SEEK_END);
nFileLen = ftell(f);
printf("文件大小为:%d 字节\n", nFileLen);
fseek(f, 0, SEEK_SET);
}
else
{
printf("The file was not opened\n");
return;
}
UINT64 nRead = 0;
UINT64 nSendLen = 0;
clock_t start, finish;
double dDuration = 0.0;
start = clock();
int i = 0;
while (true)
{
ZeroMemory(chBuf, BUF_SIZE);
if ((nFileLen – nSendLen) >= BUF_SIZE )
{
nRead = fread(chBuf, sizeof(char), BUF_SIZE, f);
//nRemainLen -= BUF_SIZE;
}
else // 剩下的
{
if (nFileLen <= nSendLen)
{
break;
}
nRead = fread(chBuf, sizeof(char), nFileLen – nSendLen, f);
//nSendLen = 0;
}
for (i = 0; i < nRead
Socket 实现非阻塞式多线程文件传输(jpg mov 等各种格式)相关推荐
- Socket 基础 非阻塞式TCP socket,实现文件传输jpg,mov等格式
Socket 基础 非阻塞式TCP socket 实现文件传输, 实测 传输5M的jpg , 30M的 NEF(单反原图) 以及 1G以上的mov文件,均正常接收 客户端可多开,服务器多线程实现服务器 ...
- linux 非阻塞 socket,linux 非阻塞式socket编程求助。。
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 一下客户端: #include #include #include #include #include #include #include #includ ...
- 阻塞式和非阻塞式udp传输_NIO非阻塞网络编程三大核心理念
本次开始NIO网络编程,之前已经说过BIO,对于阻塞IO里面的问题一定有了清晰的认识,在JDK1.4版本后,提供了新的JAVA IO操作非阻塞API,用意替换JAVA IO 和JAVA NetWork ...
- java socket nio 阻塞_Java NIO实现非阻塞式socket通信
博主知识水平有限,只能提供一个个人的狭隘的理解,如果有新人读到这儿,建议看一下其他教程或者API,如果不明白,再来看一下:如果有dalao读到这儿,希望能指出理解中的问题~谢谢 Java提供了用于网络 ...
- 高级IO(文件的读写)——阻塞式IO的困境、非阻塞式IO
以下内容源于朱有鹏<物联网大讲堂>课程的学习整理,如有侵权,请告知删除. 一.阻塞式IO的困境 1.程序中读取键盘 int main(void) {// 读取键盘// 键盘就是标准输入,s ...
- 系统间通信1:阻塞与非阻塞式通信A
版权声明:本文引用https://yinwj.blog.csdn.net/article/details/48274255 从这篇博文开始,我们将进入一个新文章系列.这个文章系列专门整理总结了目前系统 ...
- 深入理解阻塞socket和非阻塞socket
什么是阻塞socket,什么是非阻塞socket.对于这个问题,我们要先弄清什么是阻塞/非阻塞.阻塞与非阻塞是对一个文件描述符指定的文件或设备的两种工作方式. 阻塞的意思是指,当试图对该文件描述符进行 ...
- [Python]再学 socket 之非阻塞 Server
再学 socket 之非阻塞 Server 本文是基于 python2.7 实现,运行于 Mac 系统下 本篇文章是上一篇初探 socket 的续集, 上一篇文章介绍了:如何建立起一个基本的 sock ...
- 系统间通信1:阻塞与非阻塞式通信B
版权声明:本文引用https://yinwj.blog.csdn.net/article/details/48274255 接上篇:系统间通信1:阻塞与非阻塞式通信A 4.3 NIO通信框架 目前流行 ...
最新文章
- Android中实现整个视图切换的左右滑动效果
- 使用express搭建第一个Web应用【Node.js初学】
- 笔记-项目质量管理-6σ管理法
- Flask框架(SQLAlchemy(python3版本)中查询数据的方法,以及定义显示信息 )
- easyui树拖拽排序java_项目中集成Easyui-Tree,可拖拽更新节点
- 恭喜我的同事黄玉奇入选开放原子开源基金会TOC
- Python 数据分析三剑客之 NumPy(三):数组的迭代与位运算
- java基础—方法重载(overload)
- MYSQL中有时候不得不使用replace()去掉特殊字符,写在这里备用一下
- MUI 地址选择器 - picker使用
- Python判断某一天是该年的第几天
- 转载-配置tomcat让shtml嵌套文件显示
- 硬件开发者之路之——保护电路系列之输入电源端口的防护设计
- 概率论与环境数理统计 20210222
- QT模拟鼠标自动点击:1-鼠标移动自动显示坐标
- 【软件工程】数据库设计说明书
- Trimble天宝水准仪维修DINI03全站仪/电子水准仪维修特点
- RTKLIB专题学习(八)—卫星星历和钟差
- 计算机内存条能装几个,怎么查看电脑可以插多少内存条
- Java 岗史上最全八股文面试真题汇总,堪称 2022 年面试天花板
热门文章
- 以太坊服务器是什么_以太坊代币创建教程之服务器选择
- 华为OD机试 - 简易压缩算法(Python) | 机试题+算法思路+考点+代码解析 【2023】
- 看到一篇好的关于使用sonar qube 检查出错误的详细介绍
- 《对位与赋格教程(杜布瓦)》读书笔记(二):二声部对位
- mysql查找两表中不同的数据库表_各位大侠怎样查找两张表的里面的数据(这两张表在不同的数据库)...
- 深入解析:在Tensorflow框架中构建和实现SNN网络和LIF神经元模型
- TLinux:执行sudo apt install gcc提示“软件包gcc没有可安装候选”
- .net怎么使用NPOI把word转为pdf多提供几个代码示例
- Go语言多态如何实现
- 分享整理的免费API接口