分片传输——send和recv函数
最近在写socket编程收发数据,对于如何发送和接收大量数据,一直在思考。send和recv一般缓存区大小为4K,但是如果你要传输的数据超过了这个标准该如何做呢。
我想到的就是如改写write和read函数一样,改写send和recv函数,使他们能分片传输这些大数据量的信息。
int sock_send(SOCKET s,const char*buf,int len,int flags)
{
int n=,ptr=;
int nLeft=len;
if(buf==NULL)
return ;
while(nLeft>)
{
n=send(s,buf+ptr,nLeft,flags); //发送数据,
if(n==SOCKET_ERROR)//网络出现异常
{
printf("Failed send(),error code:%d/n",WSAGetLastError());
break; }
nLeft-=n;
ptr+=n;
} return sendCount; // 返回已发送的字节数
}
注意:在使用sock_send()函数时,一定要注意这样一种情况:(一定要+1,要不然就回出现乱码,就没有终止符)
send(s,sendMessage,sizeof(sendMessage)+,)
nt TCPrecv(SOCKET s,char *buf,int len,int flags)
{ int nRev=,ptr=;
int nLeft=len; if(buf==NULL)
return ; while(nLeft>)
{
nRev =recv(s,buf+ptr,length,flags);
if(nRev==SOCKET_ERROR)
{
printf("Failed recv(),error code:%d/n",WSAGetLastError());
break;
}
nLeft-=nRev;
ptr+=nRev;
} return recvCount;
}
分片传输——send和recv函数的更多相关文章
- socket使用TCP协议时,send、recv函数解析以及TCP连接关闭的问题
Tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据. 在阻塞模式下, send函数的过程是将应用程序请求发送的数 ...
- linux内核中send与recv函数详解
Linux send与recv函数详解 1.简介 #include <sys/socket.h> ssize_t recv(int sockfd, void *buff, size_t n ...
- linux Socket send与recv函数详解
转自:http://www.cnblogs.com/blankqdb/archive/2012/08/30/2663859.html linux send与recv函数详解 1 #include ...
- [转]socket使用TCP协议时,send、recv函数解析以及TCP连接关闭的问题
Tcp协议本身是可靠的,并不等于应用程序用tcp发送数据就一定是可靠的.不管是否阻塞,send发送的大小,并不代表对端recv到多少的数据. 在阻塞模式下, send函数的过程是将应用程序请求发送的数 ...
- socket函数send和recv函数
转自:http://www.cppblog.com/aaxron/archive/2012/04/27/172891.html 在发送端,一次发送4092个字节,在接收端,一次接收4092个字节,但是 ...
- socket中send和recv函数
Socket一次Recv接受的字节有限制么? 从套接字接收数据. 返回值是表示接收数据的字符串. 一次接收的最大数据量由bufsize指定.它默认为零. 注意为了最好地匹配硬件和网络现实,bufsiz ...
- send()和recv()函数详解
send()函数 int send( SOCKET s, const char FAR *buf, int len, int flags ); 不论是客户还是服务器应用程序都用send函数来向TCP连 ...
- UNIX网络编程——send与recv函数详解
#include <sys/socket.h> ssize_t recv(int sockfd, void *buff, size_t nbytes, int flags); ssize_ ...
- TCP的send与recv函数小结
Send函数: 在阻塞模式下, send函数的过程是将应用程序请求发送的数据拷贝到发送缓存中发送并得到确认后再返回.但由于发送缓存的存在,表现为:如果发送缓存大小比请求发送的大小要大,那么send函数 ...
随机推荐
- java数组排序之冒泡排序
上一篇文章说了,选择排序. 选择排序的原理就是,先确定第一个格子当中的数字是最小的,之后确定第二个格子是其他数字中最小的依次类推. 这一节当中我们来看下冒泡排序: 思路: 1.首先拿第一个数字跟第二个 ...
- Ubuntu 14.04 dnw配置
之前写的Ubuntu嵌入式环境搭建没有讲怎么配置dnw下载工具,使用dnw还得用红帽,今天配置好了ubuntu下的dnw,记录一下 首先先下载dnw的源码,这是我上传的提供给大家下载:http://p ...
- [Locked] Shortest Distance from All Buildings
Shortest Distance from All Buildings You want to build a house on an empty land which reaches all bu ...
- SRM 398(1-250pt)
题意:有两个变量x和y,三种运算符+,*,-,组成等式"变量 运算符 变量 运算符 变量 运算符 变量",要求每个变量恰好出现两次,且等式的值为val的等式有多少个.注意不计算运算 ...
- python 几种常见的测试框架
1. unittest 参考文档: https://docs.python.org/3/library/unittest.html The unittest unit testing framewor ...
- 6种GET和POST请求发送方法
我试过了畅言和多说两种社会化评论框,后来还是抛弃了畅言,不安全. 无论是畅言还是多说,我都需要从远程抓取文章的评论数,然后存入本地数据库.对于多说,请求的格式如下: // 获取评论次数,参数是文章ID ...
- G - MPI Maelstrom
题目大意: BIT最近要取会他们的超级计算机,32处理器阿波罗奥德赛与分层通信子系统分布式共享内存的机器(听着很高端大气),瓦伦丁*麦基的顾问杰克*斯威特告诉她基准测试的新系统.(没有明白什么意思) ...
- iOS状态栏颜色
下面截图给出修改 iOS 状态栏颜色的 4 种方式 Target.png Info.plist.png Storyboard.png code.png 其中第四张图中的代码,直接写在你的任何一个 Vi ...
- 代码对齐 分类: C#小技巧 2014-04-17 14:45 166人阅读 评论(0) 收藏
开发项目时,为了是代码层次清晰.美观,常常需要调整多行,使之对齐.在网上也看到一些方法,感觉不好用,偶尔发现一个小技巧. (1)多行代码同时右移 同时选中几行,按"Tab"键,就会 ...
- border、margin、padding属性的区别
可以先看下这个视频教程:http://my.tv.sohu.com/us/97014746/64226777.shtml 本文参考:http://www.cnblogs.com/chinhr/arch ...