send会阻塞比较长的时间?

yupengchen951124 2010-09-10 03:29:55
先做一个手机直播项目,发现一个问题,在走3G网络的情况下,发送(send)缓冲区中的数据会耗比较长的时间,夸张的时候达到几十秒,缓冲区的数据不大,一般不会超过1K。协议是TCP,各位大侠,有没有办法让send不要阻塞太长的时间?
关键代码如下:
int CMySocket::sendData(void *buf, int nLen)
{

int nLeft, nWritten;
u8_t* pBuf = (u8_t*)buf;
nLeft = nLen;
while (nLeft > 0)
{
nWritten = send(m_sockfd, pBuf, nLeft,0);
if (nWritten == -1)
{
return nWritten;
}
nLeft -= nWritten;
pBuf += nWritten;
}
return nLen - nLeft;
}
...全文
318 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
ringerxyz 2010-09-11
  • 打赏
  • 举报
回复
socket有个选项可以设置TCP 的 发送缓冲大小的,可以试试。

不过这个问题本身很可能是由于网络原因导致的,可以考虑采用非阻塞的方式
yupengchen951124 2010-09-11
  • 打赏
  • 举报
回复
走wlan不会有问题的,就是走evdo网络会这样
nuist320 2010-09-10
  • 打赏
  • 举报
回复
把socket设置为非阻塞的试试,很有可能是网络问题
yyy025025025 2010-09-10
  • 打赏
  • 举报
回复
发送1K数据要几十秒,感觉像是网络状况不好呢。

建议先用wifi测试下功能和耗时吧。
阿斗他爹 2010-09-10
  • 打赏
  • 举报
回复
没遇到过顶一下
儿大不由爷 2010-09-10
  • 打赏
  • 举报
回复
要是阻塞模式的肯定是要数据发送完毕才能退出的。
charles_lc 2010-09-10
  • 打赏
  • 举报
回复
我想问 为什么要用void* ?
  • 打赏
  • 举报
回复
楼主发型不错
yupengchen951124 2010-09-10
  • 打赏
  • 举报
回复
楼上的可以说具体一些吗?
纠结的木棉花 2010-09-10
  • 打赏
  • 举报
回复
一般是启用新的process来处理

80,472

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧