您的位置:首页 > 其它

分片传输——send和recv函数

2013-10-30 14:46 176 查看
  最近在写socket编程收发数据,对于如何发送和接收大量数据,一直在思考。send和recv一般缓存区大小为4K,但是如果你要传输的数据超过了这个标准该如何做呢。

  我想到的就是如改写write和read函数一样,改写send和recv函数,使他们能分片传输这些大数据量的信息。

int sock_send(SOCKET s,const char*buf,int len,int flags)
{
int n=0,ptr=0;
int nLeft=len;
if(buf==NULL)
return 0;
while(nLeft>0)
{
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)+1,0)


nt TCPrecv(SOCKET s,char *buf,int len,int flags)
{

int nRev=0,ptr=0;
int nLeft=len;

if(buf==NULL)
return 0;

while(nLeft>0)
{
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: