我在FreeRTOS中使用LwIP。我的项目基于这个URL FreeRTOS with LwIP project上的例子。我也在LPCXpresso版本6中使用LPC1769,CMSIS版本2。
我正在使用LwIP通过UDP套接字传输MP3文件。传输速度很快,但问题是有时lwip_recvfrom会在数千次操作后阻塞。我永远看不到超时条件。我想我做错了什么。
以下步骤为:
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.
}有人知道这里出了什么问题吗?
发布于 2014-10-07 00:04:49
问题解决了。
lwip_setsockopt有这样的原型:
int lwip_setsockopt(int socket, int level, int option_name,const void *option_value, socklen_t option_len);我通过拷贝发送了option_value的值。
超时运行正常。
https://stackoverflow.com/questions/26107445
复制相似问题