[quote=引用 1 楼 xiaohuh421 的回复:] BYTE *pFileData; //文件读取后保存在这个指针指向的缓冲区内. int len = 123456; //假设文件有这么大. while(len>0) { int sendLen = 1024; //一次发1K if(len < sendLen)//文件长度不足1K { sendLen = len; } send(sock, pFileData, len,0); pFileData += sendLen; //移动起始发送位置 len -= sendLen; //减去已经发送字节. } 当然, 你也可以边读取,边发送, 过程类似. 每次读取从文件读取1k, 然后发送, 再读取, 再发送.
BYTE *pFileData; //文件读取后保存在这个指针指向的缓冲区内. int len = 123456; //假设文件有这么大. while(len>0) { int sendLen = 1024; //一次发1K if(len < sendLen)//文件长度不足1K { sendLen = len; } send(sock, pFileData, len,0); pFileData += sendLen; //移动起始发送位置 len -= sendLen; //减去已经发送字节. } 当然, 你也可以边读取,边发送, 过程类似. 每次读取从文件读取1k, 然后发送, 再读取, 再发送.
你的需求为什么这么特殊?你这样分包,在tcp层未必是这样分包发送。没什么意义
我需要定义包的数量,然后再发送时,当总包数与当前包数相同时,即是发送完毕 完全理解不了啊. 这是什么需求?? 什么场景下会用到呢? 再发送时 ....... 意思是因定的数据包, 只发送一次? 多线程同时发送这个文件??
64,667
社区成员
250,488
社区内容
加载中
试试用AI创作助手写篇文章吧