通过socket连接一次性发送大数据量的问题

jalen1234 2004-05-06 08:19:03
服务器的socket(TCP)被设置成非阻塞方式,但是需要一次性发送300k-400k的数据给客户端,这样每次没有发送完全,函数就返回了,怎样才能发送完整的数据??
...全文
248 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
beipiao 2004-05-07
  • 打赏
  • 举报
回复
发送的时候不是返回发送的字节数吗,你可以继续从发送完的地方的后面进行发送,比如
发送了n个字节,那么下次发送缓冲设为sendbuff+n
gettext 2004-05-07
  • 打赏
  • 举报
回复
发送前把socket设成阻塞方式, 发送完再设回来。
理想 2004-05-07
  • 打赏
  • 举报
回复
可以用 select(...) 来等待数据发送完成
anonimousboy 2004-05-07
  • 打赏
  • 举报
回复
可以把数据拆成大小小于8192的数据段,然后再发送,这样还安全,还不容易出错!
jalen1234 2004-05-06
  • 打赏
  • 举报
回复
我调用setsockopt(fd,SOL_SOCKET,SO_SNDBUF,sendbuff, sizeof(sendbuff))进行设置后,(char sendbuff[1024*1024),设置成1M)然后用getsockopt函数取得发送缓冲的大小,还是默认的8192,没有改变
yhbttfile 2004-05-06
  • 打赏
  • 举报
回复
把缓冲设置大一些吧。

23,120

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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