文件传输粘包问题(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;
}
目录
相关文章
|
3月前
|
网络协议 iOS开发 MacOS
Mac使用TCP发送信息nc -l 9000 和 telnet 127.0.0.1 9000
Mac使用TCP发送信息nc -l 9000 和 telnet 127.0.0.1 9000
34 1
|
4月前
|
网络协议 网络性能优化
用udp协议传输文件
【7月更文挑战第18天】使用 UDP 协议传输文件 UDP(User Datagram Protocol,用户数据报协议)是一种无连接的、不可靠的传输协议。尽管它不像 TCP 那样提供可靠的传输和拥塞控制,但在某些特定场景下,例如对实时性要求较高、能容忍一定数据丢失的情况,也可以用于文件传输。
|
移动开发 网络协议 算法
TCP中的粘包、拆包问题产生原因及解决方法
TCP中的粘包、拆包问题产生原因及解决方法
878 0
TCP中的粘包、拆包问题产生原因及解决方法
|
机器学习/深度学习 监控 网络协议
浅谈 TCP 握手/数据传输/挥手过程以及 tcpdump 抓包工具使用
浅谈 TCP 握手/数据传输/挥手过程以及 tcpdump 抓包工具使用
293 0
|
存储 消息中间件 缓存
计网 - TCP 的封包格式:TCP 为什么要粘包和拆包?
计网 - TCP 的封包格式:TCP 为什么要粘包和拆包?
123 0
|
Linux
文件传输不止有FTP还有SCP,真的秀
文件传输不止有FTP还有SCP,真的秀
136 0
文件传输不止有FTP还有SCP,真的秀
|
JSON 网络协议 数据格式
TCP 粘包/拆包的原因及解决方法?
TCP粘包、拆包属于网络底层问题,在数据链路层、网络层、传输层都有可能出现。日常的网络应用开发大多数在传输层出现,而UDP是由消息保护边界的,不会发生粘包、拆包问题,只发生在TCP协议中。假设客户端向服务端发送了两个连续的数据包Packet1、Packet2;
795 0
TCP 粘包/拆包的原因及解决方法?
|
网络协议 Java 数据安全/隐私保护