这段程序看不懂了,不知道什么时候跳出来了,求解!
while( TRUE )
{
FD_ZERO( &fread );
FD_SET( xClientSocket, &fread ); //xClientSocket = xNewSocket; prvbMBPortAcceptClient
if( ( ( ret = select( xClientSocket + 1, &fread, NULL, NULL, &tval ) ) == SOCKET_ERROR ) || !ret )
{
continue;
}
if( ret > 0 )
{
if( FD_ISSET( xClientSocket, &fread ) )
{
if( ( ( ret =
recv( xClientSocket, &aucTCPBuf[usTCPBufPos], usTCPFrameBytesLeft,
0 ) ) == SOCKET_ERROR ) || ( !ret ) ) /
{
close( xClientSocket );
xClientSocket = INVALID_SOCKET;
return TRUE;
}
usTCPBufPos += ret;
usTCPFrameBytesLeft -= ret;
if( usTCPBufPos >= MB_TCP_FUNC )
{
/* Length is a byte count of Modbus PDU (function code + data) and the
* unit identifier. */
usLength = aucTCPBuf[MB_TCP_LEN] << 8U;
usLength |= aucTCPBuf[MB_TCP_LEN + 1];
/* Is the frame already complete. */
if( usTCPBufPos < ( MB_TCP_UID + usLength ) )
{
usTCPFrameBytesLeft = usLength + MB_TCP_UID - usTCPBufPos;
}
/* The frame is complete. */
else if( usTCPBufPos == ( MB_TCP_UID + usLength ) )
{
( void )xMBPortEventPost( EV_FRAME_RECEIVED ); /
return TRUE;//
}
/* This can not happend because we always calculate the number of bytes
* to receive. */
else
{
assert( usTCPBufPos <= ( MB_TCP_UID + usLength ) );
}
}
}
}
}
这是网上的一段程序,但不理解的是什么时候跳出来。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
return, break
关键是没有break呢, 唉 没人看出来吗?