c 服务器文件是存在,客户端服务器在较大的文件的c文件传输问题
下面的代码适用于最后一个数据包包含的数据少于最大长度的较小文件,该功能通过显示接收到的文件正确退出。 如果传输的文件的最后一个数据包或缓冲区包含与我的情况下接收缓冲区阵列512的大小相同的确切数量。然后程序继续等待下一个数据包。客户端服务器在较大的文件的c文件传输问题
在我的情况下,所有尺寸倍数为512的文件都卡住了。 下面是代码:用于接收
客户端代码:
void receiveFile() {
printf("inside receiveFile method\n");
char* fr_name = "final.txt";
int i;
FILE *fr = fopen(fr_name, "a");
int LENGTH = 512;
int fileLength=0;
char revbuf[LENGTH];
if (fr == NULL) {
printf("File %s Cannot be opened.\n", fr_name);
} else {
printf("starting to write the file\n");
bzero(revbuf, LENGTH);
int fr_block_sz = 0;
i=0;
while ((fr_block_sz = recv(4, revbuf, LENGTH, 0)) > 0) {
fileLength+=fr_block_sz;
i++;
printf("Received buffer: %d, %d\n",fr_block_sz,i);
int write_sz = fwrite(revbuf, sizeof(char), fr_block_sz, fr);
if (write_sz < fr_block_sz) {
error("File write failed.\n");
}
bzero(revbuf, LENGTH);
if (fr_block_sz == 0 || fr_block_sz != 512) {
break;
}
}
if (fr_block_sz < 0) {
if (errno == EAGAIN) {
printf("recv() timed out.\n");
} else {
fprintf(stderr, "recv() failed due to errno = %d\n", errno);
}
}
printf("FILE RECEIVED....Total Bytes received:%d \n",fileLength);
}
fclose(fr);
}
服务器,用于接收文件:
void sendFile() {
printf("inside sendFile method\n");
char* fs_name = "mb.txt";
int LENGTH = 512;
int sfileLength=0;
char sdbuf[LENGTH];
int i=0;
printf("[Client] Sending %s to the Server... \n", fs_name);
FILE *fs = fopen(fs_name , "r");
if (fs == NULL) {
perror("ERROR: File not found.\n");
exit(1);
}
bzero(sdbuf, LENGTH);
int fs_block_sz;
while ((fs_block_sz = fread(sdbuf, sizeof(char), LENGTH, fs)) > 0) {
i++;
printf("Sent:%d , %d \n", fs_block_sz,i);
sfileLength+=fs_block_sz;
if (send(4, sdbuf, fs_block_sz, 0) < 0) {
fprintf(stderr, "ERROR: Failed to send file %s. (errno = %d)\n",
fs_name, errno);
break;
}
bzero(sdbuf, LENGTH);
}
printf("File sent.... Total Bytes:%d\n", sfileLength);
fclose(fs);
}
2013-09-28
sean
c 服务器文件是存在,客户端服务器在较大的文件的c文件传输问题相关推荐
- 带有服务器回调的通用客户端——服务器 DotNet远程处理
目录 介绍 DotNet 远程处理框架 约束.限制 客户端--服务器定义 接口 服务器通知参数 服务器异常 服务器实现 客户端实现 如何测试示例 本文中的项目 结论 下载演示 - 194 KB 下载源 ...
- ktv服务器操作系统,开源ktv客户端服务器系统
开源ktv客户端服务器系统 内容精选 换一换 专享版Kafka实例完全兼容开源Kafka协议,可以直接使用kafka开源客户端连接.如果使用SASL认证方式,则在开源客户端基础上使用云服务提供的证书文 ...
- 华为服务器网卡激活配置文件,客户端服务器网络配置文件
客户端服务器网络配置文件 内容精选 换一换 在进行应用开发时,要准备的开发和运行环境如表1所示.进行应用开发时,需要同时准备代码的运行调测的环境,用于验证应用程序运行正常.如果使用Linux环境调测程 ...
- 客户端/服务器程序_了解客户端/服务器协议和Web应用程序
客户端/服务器程序 Introduction 介绍 HyperText Transfer Protocol or "HTTP" is the underpinning of int ...
- cf虚拟服务器设置方法,cf客户端 服务器 连接
cf客户端 服务器 连接 内容精选 换一换 DCS缓存实例支持域名访问后,若客户端无法使用域名连接DCS缓存实例,需要将租户子网的DNS服务地址配置为内网域名服务器地址.具体配置方法请参考修改VPC子 ...
- 微软服务器 客户机,网络客户端和服务器技术简介
网络客户端和服务器技术简介 已完成 7 分钟 关于网络的组成,你首先需要了解网络的构建方式. 服务器是网络的骨干. 通过混合使用集线器.交换机和路由器,可在整个网络中实现连接. 此知识适用于自己组织的 ...
- linux——客户端服务器文件传输
实现文件传输并不难,只需用fopen.fread.fwrite.fclose这几个函数对文件操作即可.文本文件就不说了,我们就已下图为例. 我们先来看看这个图片文件里装的是什么,我们以notpad++ ...
- Java服务端向客户端写文件_java实现客户端向服务器发送文件
本文实例为大家分享了java实现客户端向服务器发送文件的具体代码,供大家参考,具体内容如下 服务器源代码: import java.io.BufferedReader; import java.io. ...
- udp文件服务器,UDP客户端服务器文件传输
我想通过UDP将数据包从客户端发送到服务器.我面临的问题是,如果最后一个数据包大小小于我们正在读取的字节数组的大小,那么来自先前数据包的冗余数据将被附加到它.我试着只将最后一个数据包的正确部分复制到一 ...
最新文章
- 基于Java的RDMA高性能通信库(五):JXIO
- express不是内部或外部命令,也不是可运行的程序
- [云炬python3玩转机器学习笔记] 3-11Matplotlib数据可视化基础
- 专访Google数据科学家彭晨:大数据成为潮流走近各行各业!
- python-day76--django-中间件
- 大学计算机基础实训指导第四版,大学计算机基础:学习指导与实训篇(第4版)...
- 计算机打印中 纸张不出来,菜鸟发货平台打印机不出纸怎么办?打印机纸张尺寸如何设置?...
- 雷达篇(四)雷达工作波段
- 科研必备:LaTeX论文排版软件的简介,安装与使用教程
- sklearn及gensim下lda模型的训练
- 微信步数修改.html,httpCatcher,charles修改微信步数,支付宝森林能量满满
- python里随机生成属性_Python随机生成信用卡卡号的实现方法
- PostgreSQL10.1-CN-v0.1.chm中文手册
- 如何听懂画外音-《用事实说话》:听懂“暗语”,让沟通透明化
- 【小Game】C++ - EGE - 躲避球小游戏
- maven本地仓库中已有jar包,项目却读取不了
- python之面向对象反射和双下方法
- SEM营销推广策略和优化,做好其实并不难!
- 一元回归及多元回归模型
- OSChina 周二乱弹 —— 明天你是否会想起
热门文章
- 内存溢出_JVM|03内存溢出实战
- scenebuilder各控件属性介绍_C#控件及常用设计整理(三)
- hp 交换机远程连接_使用iLO远程管理HP系列服务器
- 服务器上flash不显示动画,win10电脑在线预览不能加载flash
- 数控加工编程计算机的配置,计算机辅助数控加工编程.ppt
- python 练习题-去重排序与字符串分割
- Python3NumPy的常用函数
- Python面向对象中super用法与MRO机制
- python hashlib模块(提供常见摘要算法)
- 1805b: Coronavirus Spike Protein Binder Design 寻找蛋白质阻止新冠病毒感染人类细胞