现在要在程序里加入数据接收完毕的标志,程序如下,我该怎么判断一次性发了多包数据,数据已接收完毕
while (1)
{
bytesRead = ServerTCPRead (clientInfoPtr->handle, dataBuf, sizeof (dataBuf) - 1, 2000);
GetTCPPeerAddr (clientInfoPtr->handle, peerAddress, sizeof (peerAddress));
if (bytesRead > 0)
{
dataBuf [bytesRead] = '\0';
GetTCPPeerName (clientInfoPtr->handle, peerName, sizeof (peerName));
GetSystemDate (&month, &day, &year);
GetSystemTime (&hour,&minute,&second);
sprintf(datetime,"%4d%02d%02d%02d%02d%02d",year,month,day,hour,minute,second);
if (strcmp(peerAddress,"192.168.1.157")==0)
{
char readData[5001];
CmtGetLock(lock);
memcpy(readData,dataBuf,5001);
CmtReleaseLock(lock);
NBearingInfo *nbearingInfo=readData;
sprintf(sqlcommand,"insert into nbearinginfo values('%.4f','%.4f','%s','%s','%s','%s','%s','%s','%s','%s','%s')",nbearingInfo->setvalue,nbearingInfo->value,nbearingInfo->angle,nbearingInfo->spe,nbearingInfo->date,nbearingInfo->test,nbearingInfo->type,nbearingInfo->number,nbearingInfo->codename,nbearingInfo->name,datetime); //获取实时数据显示并存入数据库中
mysql_real_query(&conn,sqlcommand,strlen(sqlcommand));
int i=0;
GetNumTableRows (TabPanelHandlern, NPANEL_TABLE,&i );
if(i>=10)
DeleteTableRows (TabPanelHandlern, NPANEL_TABLE,i,1);
InsertTableRows (TabPanelHandlern, NPANEL_TABLE,1 , 1, VAL_USE_MASTER_CELL_TYPE);
SetTableCellVal (TabPanelHandlern, NPANEL_TABLE,MakePoint(1,1),nbearingInfo->setvalue);
SetTableCellVal (TabPanelHandlern, NPANEL_TABLE,MakePoint(2,1),nbearingInfo->value);
SetTableCellVal (TabPanelHandlern, NPANEL_TABLE,MakePoint(3,1),nbearingInfo->angle);
SetTableCellVal (TabPanelHandlern, NPANEL_TABLE,MakePoint(4,1),nbearingInfo->spe);
SetTableCellVal (TabPanelHandlern, NPANEL_TABLE,MakePoint(5,1),nbearingInfo->date);
SetTableCellVal (TabPanelHandlern, NPANEL_TABLE,MakePoint(6,1),nbearingInfo->test);
SetTableCellVal (TabPanelHandlern, NPANEL_TABLE,MakePoint(7,1),nbearingInfo->type);
SetTableCellVal (TabPanelHandlern, NPANEL_TABLE,MakePoint(8,1),nbearingInfo->number);
SetTableCellVal (TabPanelHandlern, NPANEL_TABLE,MakePoint(9,1),nbearingInfo->codename);
SetTableCellVal (TabPanelHandlern, NPANEL_TABLE,MakePoint(10,1),nbearingInfo->name);
SetTableCellVal (TabPanelHandlern, NPANEL_TABLE,MakePoint(11,1),datetime);
}
}
}
发送程序是一次发送多行数据(多少数据无法确定,同时也可能有多个发送程序同时向接收程序发送),接收程序是一行一行进行接收,分多次接收完毕,如何判断多行数据已接收完毕,同时向发送程序发送接收完成的标志。