首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >LwIP上的SO_RCVTIMEO选项

LwIP上的SO_RCVTIMEO选项
EN

Stack Overflow用户
提问于 2014-09-30 03:32:29
回答 1查看 4.7K关注 0票数 1

我在FreeRTOS中使用LwIP。我的项目基于这个URL FreeRTOS with LwIP project上的例子。我也在LPCXpresso版本6中使用LPC1769,CMSIS版本2。

我正在使用LwIP通过UDP套接字传输MP3文件。传输速度很快,但问题是有时lwip_recvfrom会在数千次操作后阻塞。我永远看不到超时条件。我想我做错了什么。

以下步骤为:

代码语言:javascript
复制
int socket = lwip_socket(AF_INET, SOCK_DGRAM, 0);

if(lwip_setsockopt( socket,
                    SOL_SOCKET,
                    SO_RCVTIMEO,
                    (int)timeoutTimeInMiliSeconds,
                    sizeof(int)) == -1)
{
    return -1;
}
....
if(lwip_bind(protocolConfig.socket,
             (struct sockaddr *)&sLocalAddr,
             sizeof(sLocalAddr)) == -1)
{
    return -1;
}
bytesWritten = lwip_sendto( socket,
                            transmitBuffer,
                            transmitBufferIndex,
                            0,
                            (struct sockaddr *)&sDestAddr,
                            sizeof(sDestAddr));
.....
bytesReceived = lwip_recvfrom(  socket,
                                receptionBuffer,
                                receptionBufferSize,
                                0,
                                NULL,
                                NULL);

if(bytesReceived < 0)
{
   //Error stuff, this condition is never reached.
}

有人知道这里出了什么问题吗?

EN

回答 1

Stack Overflow用户

发布于 2014-10-07 00:04:49

问题解决了。

lwip_setsockopt有这样的原型:

代码语言:javascript
复制
int lwip_setsockopt(int socket, int level, int option_name,const void *option_value, socklen_t option_len);

我通过拷贝发送了option_value的值。

超时运行正常。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26107445

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档