当前位置: 技术问答>linux和unix
select函数疑问
来源: 互联网 发布时间:2016-03-07
本文导语: 我写了个简单程序,用TCP/IP协议进行简单的网络通信,在终端嵌入式设备上建的服务器,PC上建的客户端。按说,在此协议层应该不会有丢数据的现象产生吧?可是明明PC端发送成功的前提下,终端设备上有时select不...
我写了个简单程序,用TCP/IP协议进行简单的网络通信,在终端嵌入式设备上建的服务器,PC上建的客户端。按说,在此协议层应该不会有丢数据的现象产生吧?可是明明PC端发送成功的前提下,终端设备上有时select不到。不过也不是一直收不到,是传输成功许多次之后才出现的这种情况。这是相关代码:
FD_CLR(new_fd, &fdR);
while(1)
{
FD_ZERO(&fdR);
FD_SET(new_fd, &fdR);
timeout.tv_sec = 0;
timeout.tv_usec =500;
ret = select(new_fd + 1, &fdR, NULL, NULL, &timeout);
if(ret == -1)
{
break;
}
else if(!ret)
{
continue;
}
memset(szTempBuff, 0, sizeof(szTempBuff));
ret = read(new_fd, szTempBuff, uiLastSize);
if(ret)
...
}
希望高手帮忙看下。
FD_CLR(new_fd, &fdR);
while(1)
{
FD_ZERO(&fdR);
FD_SET(new_fd, &fdR);
timeout.tv_sec = 0;
timeout.tv_usec =500;
ret = select(new_fd + 1, &fdR, NULL, NULL, &timeout);
if(ret == -1)
{
break;
}
else if(!ret)
{
continue;
}
memset(szTempBuff, 0, sizeof(szTempBuff));
ret = read(new_fd, szTempBuff, uiLastSize);
if(ret)
...
}
希望高手帮忙看下。
|
短连接的方式也可以,
不过,如果要保持长连接, 心跳包是必须的.
不过,如果要保持长连接, 心跳包是必须的.