📄 communicate.cpp
字号:
// 取第2列: 管理员密码
memset(szBuff, 0x00, sizeof(szBuff));
dbf.GetField(2, szBuff, 50);
//m_strTool.alltrim(szBuff);
memset(passwddbf,0x00,sizeof(passwddbf));
strcpy(passwddbf, szBuff);
//校验
if((memcmp(admin, admindbf,6) == 0)
&& (memcmp(passwd, passwddbf, 6) == 0))
{
dbf.DeleteRecord((long)i);
dbf.Zap();
memcpy(packstruct->m_Fhdm,"0000",sizeof(packstruct->m_Fhdm));
memset(packstruct->m_Data,0x00,sizeof(packstruct->m_Data));
strcpy(packstruct->m_Data, "删除成功");
iLen = strlen(packstruct->m_Data);
packstruct->m_Data[iLen] = 0x01;
memset(tmpStr,0x00,sizeof(tmpStr));
memset(packstruct->m_DataLen,0x00,sizeof(packstruct->m_DataLen));
iLen = strlen(packstruct->m_Data);
sprintf(tmpStr, "%04d", iLen);
memcpy(packstruct->m_DataLen, tmpStr, 4);
dbf.Close();
return i; //update by zhangl
}
}
memcpy(packstruct->m_Fhdm,"0001",sizeof(packstruct->m_Fhdm));
memset(packstruct->m_Data,0x00,sizeof(packstruct->m_Data));
strcpy(packstruct->m_Data, "没有该记录");
iLen =strlen(packstruct->m_Data);
packstruct->m_Data[iLen] = 0x01;
memset(tmpStr,0x00,sizeof(tmpStr));
memset(packstruct->m_DataLen,0x00,sizeof(packstruct->m_DataLen));
iLen = strlen(packstruct->m_Data);
sprintf(tmpStr, "%04d", iLen);
memcpy(packstruct->m_DataLen, tmpStr, 4);
dbf.Close();
return -3;
}
//ExchangeSendData返回包长度
memset(SendReqPack,0,sizeof(SendReqPack));
iRet = package.ExchangeSendData(packstruct, SendReqPack, cHoldmem);
WriteParseLog(__FILE__,__LINE__,"log[%s] [%d]",SendReqPack,iRet);
iRet = package.ExchangeRecvData(packstruct,cRecv, cHoldmem);
if((packstruct->m_Blx[0] == '1')&&(memcmp(packstruct->m_Fhdm,"0000",4)==0))
{
WriteParseLog(__FILE__,__LINE__,"%s [包类型]=[1]","接收到数据包,!! ");
//TODO: add needed code here,
//Change some items and send to the host again!
//
// char tempStr[80];
char PackbEndFlag[10];
//add zhangli 20050724 !!!
char tempjydm[9];
memset(tempjydm,0x00,sizeof(tempjydm));
memcpy(tempjydm,packstruct->m_Jydm,sizeof(packstruct->m_Jydm));
if(IsFirst)
{
// WriteParseLog(__FILE__,__LINE__,"创建DBF [%s]文件",dbffile);
package.CreateDbfFile(tempjydm, dbffile, dbf);
}
//GetCurrentDirectory(80,tempStr);
sprintf( DbfFileName, "..\\dbf\\%s",dbffile);
package.AppendRecord(DbfFileName,tempjydm,packstruct,dbf);
WriteParseLog(__FILE__,__LINE__,"在%s中追加包接收到的消息,",DbfFileName);
IsFirst = FALSE;
memset(PackbEndFlag,0x00,sizeof(PackbEndFlag));
//多结果结束标志
//memcpy(PackbEndFlag,packstruct->m_Jydm,sizeof(packstruct->m_Jydm));
if(packstruct->m_Flag[0]=='0')
{
package.bEndFlag = true;
}
} //if
if(package.bEndFlag)
return 0;
}
////开启Server。。。
int Ccommunicate::KDSERVER(PACKSTRUCT *Spackstruct,char *cHoldmem)
{
/*
int iRet;
int timeout;
char cSerIp[16];
char cSerPort[6];
char ctimeout[20];
WriteParseLog(__FILE__,__LINE__,"%s","通讯模块,KDSERVER(), ");
GetPrivateProfileString("SERVER","IP","127.0.0.1",cSerIp,16,"..\\conf\\Config.ini");
GetPrivateProfileString("SERVER","PORT","6000",cSerPort,10,"..\\conf\\Config.ini");
GetPrivateProfileString("SERVER","TIMEOUT","15",ctimeout,10,"..\\conf\\Config.ini");
timeout = atoi(ctimeout)*1000;
memset((char *)&Sserv_addr,0,sizeof(Sserv_addr));
Sserv_addr.sin_family=AF_INET;
Sserv_addr.sin_addr.s_addr=inet_addr(cSerIp);
Sserv_addr.sin_port=htons(atoi(cSerPort));
if((Ssock=socket(AF_INET, SOCK_STREAM, 0)) == INVALID_SOCKET)
{
package.ClearPackStruct(9000,Spackstruct);
CloseSocket(Ssock);
return -1; ////Socket 无效,,
}
if (SOCKET_ERROR == setsockopt(Ssock, SOL_SOCKET, SO_LINGER,(char *)&timeout,sizeof(timeout))
|| SOCKET_ERROR == setsockopt(Ssock, SOL_SOCKET, SO_RCVTIMEO,(char *)&timeout,sizeof(timeout)))
{
package.ClearPackStruct(9000,Spackstruct);
CloseSocket(Ssock);
return -2; ////设置Socket超时出错。。
}
iRet = Bind(Ssock,(struct sockaddr *)&Sserv_addr,sizeof(Sserv_addr));
if(iRet)
{
package.ClearPackStruct(9000,Spackstruct);
CloseSocket(Ssock);
////无法绑定服务器.
return -3;
}
if (Listen(Ssock,1) == SOCKET_ERROR) //开始监听客户连接请求
{
package.ClearPackStruct(9000,Spackstruct);
CloseSocket(Ssock);
return -4; ////服务器监听失败
}
memset(&cHdmem,0x00,sizeof(cHdmem));
memcpy(&cHdmem,&cHoldmem,sizeof(cHoldmem));
int mFlag = 0;
BOOL IsFirst;
char ctemp[5];
char cRecv[RECV_MAX_LEN];
char dbffile[80];
char DbfFileName[80];
TDBF dbf;
memset(ctemp,0,5);
IsFirst = FALSE;
Ssock = Accept(Ssock,
(LPSOCKADDR)&Sserv_addr,
0);
if (Ssock == INVALID_SOCKET)
{
package.ClearPackStruct(9000,Spackstruct);
CloseSocket(Ssock);
return -1; ////Accept 处理出错,。
}
else
{
iRet = 1;
while(iRet>0 )
{
iRet = Receive(Ssock,ctemp,4,0);
if(iRet < 0)
{
package.ClearPackStruct(9000,Spackstruct);
CloseSocket(Ssock);
return -2; ///接收失败。
}
if(atoi(ctemp) >= RECV_MAX_LEN)
{
package.ClearPackStruct(9000,Spackstruct);
CloseSocket(Ssock);
return -3; ////接收到的长度大于最大长度。
}
iRet = Receive(Ssock,cRecv,atoi(ctemp),0);
///分解收到数据,??????????
//memcpy(&Spackstruct,cRecv,sizeof(cRecv));
if(iRet < 0)
{
package.ClearPackStruct(9000,Spackstruct);
closesocket(Ssock);
return -2;
}
/////接收数据合法,,
iRet = package.ExchangeRecvData(Spackstruct,cRecv, cHdmem);
if(Spackstruct->m_Blx[0] == '1')
{
////接收的包为有效包。。。
// char tempStr[80];
char tempjydm[9];
memset(tempjydm,0x00,sizeof(tempjydm));
memcpy(tempjydm,Spackstruct->m_Jydm,sizeof(Spackstruct->m_Jydm));
if(IsFirst)
{
WriteParseLog(__FILE__,__LINE__,"创建DBF [%s]文件",dbffile);
package.CreateDbfFile(tempjydm, dbffile, dbf);
}
//GetCurrentDirectory(80,tempStr);
sprintf( DbfFileName, "..\\dbf\\%s",dbffile);
package.AppendRecord(DbfFileName,tempjydm,Spackstruct,dbf);
WriteParseLog(__FILE__,__LINE__,"在%s中追加包接收到的消息,",DbfFileName);
IsFirst = FALSE;
break;
}
}
}
*/
return 0;
}
int Ccommunicate::comp_char(unsigned char *buff, int len)
{
unsigned char buff1[5120];
int i,j;
i = 0;j = 0;
while(i < len){
if((buff[i]>='0')&&(buff[i]<='9')&&(buff[i+1]>='0')
&&(buff[i+1]<='9')){
buff1[j++] = (buff[i]-'0')*10 + (buff[i+1]-'0') + 1;
i += 2;
} if((buff[i] == ' ')||((buff[i]>='0')&&(buff[i]<='9'))||((buff[i]<='z')&&(buff[i]>='a'))||((buff[i]<='Z')&&(buff[i]>='A'))){
buff1[j++] = buff[i++] + 100;
} else {
buff1[j++]=0;
buff1[j++]=buff[i++];
}
}
buff1[j] = 0;
memcpy(buff,buff1,j+1);
return j+1;
}
int Ccommunicate::uncomp_char(unsigned char *buff, int len)
{
unsigned char buff1[5120];
int i,j;
int n;
j = 0;
i = 0;
while(i<len){
if(buff[i] == 0){
buff1[j++] = buff[i+1];
i += 2;
continue;
} if((unsigned char)buff[i] > 100) {
buff1[j++] = (unsigned char)buff[i] - 100;
i++;
continue;
} else {
n=(unsigned char)buff[i] - 1;
buff1[j++] = '0'+ n/10;
buff1[j++] = '0'+ n%10;
i++;
continue;
}
}
buff1[j] = 0;
strcpy((char *)buff,(char *)buff1);
return j;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -