文件传输粘包问题(LinuxC)

简介: 文件传输粘包问题(LinuxC)

发送方

int wlen = 0;
// buf 里面存放的是文件的内容
// size 存放文件大小的int型
// 先发送文件大小
ret = write(connfd, &size, 4);
// 在发送文件具体内容
while(1) {
   ret = write(connfd, buf+wlen, size-wlen);
   if (ret == 0) {break;}
   // printf("ret=%d\n", ret);
   wlen += ret;
}

接收方

int rlen = 0;
char buf[1024*1024];
int size = 0;
// buf 用户存放的接受到的文件内容
// size 存放文件大小的int型
// 先接收文件大小
ret = read(connfd, &size, 4);
// 在接收文件具体内容
while(1) {
   ret = read(connfd, buf+rlen, size-rlen);
   if (ret == 0) {break;}
   // printf("ret=%d\n", ret);
   rlen += ret;
}
目录
相关文章
|
移动开发 网络协议 算法
TCP中的粘包、拆包问题产生原因及解决方法
TCP中的粘包、拆包问题产生原因及解决方法
762 0
TCP中的粘包、拆包问题产生原因及解决方法
|
8月前
|
网络协议 Java
java实现TCP协议文件传输
java实现TCP协议文件传输
|
8月前
|
Ubuntu Python Windows
142 python网络编程 - UDP发送数据
142 python网络编程 - UDP发送数据
46 0
|
存储 消息中间件 缓存
计网 - TCP 的封包格式:TCP 为什么要粘包和拆包?
计网 - TCP 的封包格式:TCP 为什么要粘包和拆包?
88 0
|
设计模式 缓存 网络协议
linux网络编程(一) TCP网络协议及其格式
linux网络编程(一) TCP网络协议及其格式
128 0
linux网络编程(一) TCP网络协议及其格式
|
JSON 网络协议 数据格式
TCP 粘包/拆包的原因及解决方法?
TCP粘包、拆包属于网络底层问题,在数据链路层、网络层、传输层都有可能出现。日常的网络应用开发大多数在传输层出现,而UDP是由消息保护边界的,不会发生粘包、拆包问题,只发生在TCP协议中。假设客户端向服务端发送了两个连续的数据包Packet1、Packet2;
718 0
TCP 粘包/拆包的原因及解决方法?
|
网络协议 Java 数据安全/隐私保护