linux 环境下,采用C语言,用sokcet通信向多个STM32发送68k数据,正常运行模式下可以发送成功,gdb调试时只能发送29200个字节,求解决方法

mengzhongren10 2017-11-08 04:07:47
本人在一块Arm芯片上做主控软件,采用linux系统和C语言,arm作为server,和多块STM32做网络连接,其中涉及到一项功能就是给每一块stm32通过socket发送68k字节的数据,采用单独起一个线程来发送这些数据,正常运行模式下,可以看到打印的发送数据长度的返回值为68k,但是在gdb模式下,发送数据长度的返回值就是29200字节,所以现在无法使用gdb的方式来调试程序了,请大神帮忙分析怎么回事,应该怎么解决?谢谢了
...全文
648 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
JasonHuo_ 2018-01-22
  • 打赏
  • 举报
回复
内核socket缓冲区不能一次接收68k的数据的,要多次接收
小竹z 2017-11-08
  • 打赏
  • 举报
回复
socket 的send函数返回的是成功写入到内核缓冲区的数据长度,返回29200说明数据并没有一次发送成功,需要再次send,代码修改为多次send就好了

23,110

社区成员

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

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