windows上异步socket怎样正确的发送

zhousitiaoda zhousitiaoda 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
send,我的理解是把数据发送到缓冲区,到了缓冲区后由TCP协议来保证数据完整的发送过去。
标准的做法是否必须得像下面这样

int SendRequest(int socket_fd,const char*send_buffer,long size)
{
int ret = -1;
int Total = 0;
int lenSend = 0;

struct timeval tv;
tv.tv_sec = 3;
tv.tv_usec = 500;
fd_set wset;
while(1)
{
FD_ZERO(&wset);
FD_SET(socket_fd, &wset);
if(select(socket_fd + 1, NULL, &wset, NULL, &tv) > 0)//3.5秒之内可以send,即socket可以写入
{
lenSend = send(socket_fd,send_buffer + Total,size -Total,0);
if(lenSend == -1)
{
ret = SEND_FAIL;
break;
}
Total += lenSend;
if(Total == size)
{
ret = OK;
break;
}
}
else //3.5秒之内socket还是不可以写入,认为发送失败
{
ret = SEND_FAIL;
break;
}
}
return ret;
}
...全文

相关推荐

评论 10
收藏 已收藏
分享
返回顶部
zhousitiaoda
网络编程 18,356 成员 64,161 内容