我碰到了以下问题,望大家帮忙解决,谢谢
我的代码是(平台是W2kserver):
char buffer[400]={0};
int count =512;
FD_ZERO(&ready);
FD_SET( CSocket , &ready);
int r = 0;
int reclen = 0;
r = select ( 1 , &ready, 0, 0, &VTimeOut) ;
if ( r > 0)
{
reclen = recv ( CSocket , buff , count , 0 ) ;
if (reclen > 0)
return reclen; // 读到数据,正常返回
else
{
return -1; // 有错误发生
Active = false;
}
}
问题是我在与unix系统平台上的软件通讯的时候r返回的是1,而reclen返回的是-1,buff中没数据,而同样的程序,与WINDODS系统平台上的软件通讯的时候buff就有数据。同时我又在windows平台中写了一个通讯程序(使用C++BUILDER6中的socket通讯控件做的)与unix系统平台上的软件通讯的时候buff中也有数据。不知为什么,谢谢。
我的代码是(平台是W2kserver):
char buffer[400]={0};
int count =512;
FD_ZERO(&ready);
FD_SET( CSocket , &ready);
int r = 0;
int reclen = 0;
r = select ( 1 , &ready, 0, 0, &VTimeOut) ;
if ( r > 0)
{
reclen = recv ( CSocket , buff , count , 0 ) ;
if (reclen > 0)
return reclen; // 读到数据,正常返回
else
{
return -1; // 有错误发生
Active = false;
}
}
问题是我在与unix系统平台上的软件通讯的时候r返回的是1,而reclen返回的是-1,buff中没数据,而同样的程序,与WINDODS系统平台上的软件通讯的时候buff就有数据。同时我又在windows平台中写了一个通讯程序(使用C++BUILDER6中的socket通讯控件做的)与unix系统平台上的软件通讯的时候buff中也有数据。不知为什么,谢谢。
{
recv(...)
}