OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5024|回复: 8

关于使用LWIP socket read()函数接收超时的设置问题!

[复制链接]

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2015-7-21
在线时间
18 小时
发表于 2020-8-11 16:10:43 | 显示全部楼层 |阅读模式
5金钱
硬件平台:应该和这个问题没关系

软件平台:ucosII+lwip1.4.1+IAR+JLINK

背景描述:

1:电脑做服务端、设备做客户端,设备单开一个线程用作和服务端的交互;
2:线程创建,连接,通信没有问题,(服务器端使用网络调试助手);

最终需要解决的问题:
客户端在加电后创建一个socket,然后一直阻塞在read()函数,但这样存在一个问题,就是网络断开后无法重新连接,需要重启客户端—>创建socket->connect()

目的:
在read()中添加超时,即等待10s如果还没有接收到数据的话,close()套接字,然后再重新new一个,重新connect。

目前的问题:
源码:
struct timeval timeout;
timeout.tv_sec = 10;
timeout.tv_usec = 0;
ret = setsockopt(sock, SOL_SOCKET,SO_RCVTIMEO,(const char*)&timeout,sizeof(timeout));
read(sock, &buff[0], sizeof(buff));

debug模式下,单步运行,当执行到setsockopt()时,ret的值为0,也就是正常的,但是执行到read()函数时,并没有等待10s,而是马上跳到下一行代码。

如果不使用setsockopt()的话,会一直阻塞带read()函数,直到收到上位机下发的数据。

请问为什么在read()函数时没有等待10s再往下执行能???debug模式下和release模型下,timeout有什么区别吗???

最佳答案

查看完整内容[请看2#楼]

结贴 调试已完成,未使用timeout
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2015-7-21
在线时间
18 小时
 楼主| 发表于 2020-8-11 16:10:44 | 显示全部楼层
结贴
调试已完成,未使用timeout
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165377
金钱
165377
注册时间
2010-12-1
在线时间
2111 小时
发表于 2020-8-12 02:08:55 | 显示全部楼层
帮顶
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2015-7-21
在线时间
18 小时
 楼主| 发表于 2020-8-12 16:33:24 | 显示全部楼层
自顶!自顶!
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2015-7-21
在线时间
18 小时
 楼主| 发表于 2020-8-13 20:56:20 | 显示全部楼层
没人啊?????
回复

使用道具 举报

7

主题

237

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1110
金钱
1110
注册时间
2019-5-6
在线时间
128 小时
发表于 2020-9-24 10:28:05 | 显示全部楼层
agoodog 发表于 2020-8-13 20:56
没人啊?????

兄弟,留个QQ像你请教下啊
一步一个脚印
回复

使用道具 举报

8

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
116
金钱
116
注册时间
2015-7-21
在线时间
18 小时
 楼主| 发表于 2020-10-9 19:21:54 | 显示全部楼层
zhangbing12304 发表于 2020-9-24 10:28
兄弟,留个QQ像你请教下啊

你留一个,我联系你
回复

使用道具 举报

7

主题

237

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1110
金钱
1110
注册时间
2019-5-6
在线时间
128 小时
发表于 2020-10-25 22:51:50 | 显示全部楼层
agoodog 发表于 2020-10-9 19:21
你留一个,我联系你

771683737, 请兄台多多指教!
一步一个脚印
回复

使用道具 举报

22

主题

69

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
303
金钱
303
注册时间
2019-11-10
在线时间
61 小时
发表于 2021-7-30 17:32:58 | 显示全部楼层
群主,你好,请问未使用Timeout是什么意思,是有个宏需要配置吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-2-27 12:09

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表