|
我修改了TCP客户端程序用来接收数据,但是每次的情况都是:
用recvnc函数 接收了数据头 和 1460个数据以后i = (int)recvnc(s, (void **)&pBuf, 0, &hBuffer);返回值i 一直都是 -1,这是为什么呢?
//接收数据头
if(head_flag==1)
{
i = (int)recvnc(s, (void **)&pBuf, 0, &hBuffer);
if(i==132)//data head
{
if(i > 0)
{
for(iii=0;iii<32;iii++)
{
head[iii]=*pBuf;
pBuf = pBuf+1;
}
write_data.sec = head[3]<<24|head[2]<<16|head[1]<<8|head[0];
write_data.min = head[7]<<24|head[6]<<16|head[5]<<8|head[4];
write_data.hour = head[11]<<24|head[10]<<16|head[9]<<8|head[8];
write_data.day = head[15]<<24|head[14]<<16|head[13]<<8|head[12];
write_data.month = head[19]<<24|head[18]<<16|head[17]<<8|head[16];
write_data.year = head[23]<<24|head[22]<<16|head[21]<<8|head[20];
pBuf = pBuf+12;
for(iii=44;iii<68;iii++)
{
head[iii]=*pBuf;
pBuf = pBuf+1;
}
recvncfree(hBuffer);
head_flag = 0;
}
}
}
//接收数据
for(ii=0;ii<6;ii++)
{
j = (int)recvnc(s, (void **)&pBuf, 0, &hBuffer);
if(j > 0)
{
for(fff=0;fff<current_i;fff++)
{
g_buffer[ii].d_buffer[fff]=*pBuf;
pBuf = pBuf+1;
}
}
else
{
SD_write = 0;
//break;
}
recvncfree(hBuffer);
}
|
|