BOOL RzxCoreIO::SendPhotoToCenter(LPCSTR lpIdNum,
????????? LPCSTR lpImgPath,
????????? int nImgType,
????????? LPSTR lpRetErrorMsg)
{
?//連接服務器
?char chost[25]={0};
?int nPort = 0;
?
?CRzxProfile objRzxProfile;
?if (objRzxProfile.GetCityIp(chost) == FALSE)
??return FALSE;
?nPort = objRzxProfile.GetCardPort();
?
?Inition();
?RzxProtocol objConn;
?BOOL rtn=objConn.Connect(chost,nPort);?
?if(!rtn)
?{
??printf("Error:Connect server failed!\n");
??return FALSE;
?}
?USER_INFO_GRAPH szPhotoData;
?char *pPhotoData = NULL;
?memset(&szPhotoData, 0, sizeof(szPhotoData));
?objRzxProfile.GetBarId(szPhotoData.szBarId);
?if (!PackPhotoInfo(lpIdNum, lpImgPath, nImgType, szPhotoData, lpRetErrorMsg))
?{
??delete [] szPhotoData.pData;
??return FALSE;
?}
?//發送包頭
?TPACKHEAD packet;
?memset(&packet,0,sizeof(packet));
?PackHeadInfo(CMD_SEND_PHOTO_TO_CENTER, ntohl(szPhotoData.lGraphSize)+sizeof(USER_INFO_GRAPH)-sizeof(char *), packet);
?if (objConn.Write(&packet, sizeof(TPACKHEAD)) == 0)
?{
??delete [] szPhotoData.pData;
??return FALSE;
?}
?//發送照片信息頭
?if (objConn.Write(&szPhotoData, sizeof(USER_INFO_GRAPH)-sizeof(char *)) == 0)
?{
??delete [] szPhotoData.pData;
??return FALSE;
?}
?//發送照片數據
?if (objConn.Write(szPhotoData.pData, ntohl(szPhotoData.lGraphSize)) == 0)
?{
??delete [] szPhotoData.pData;
??return FALSE;
?}
?delete [] szPhotoData.pData;
?//接收中心回應
?memset(&packet,0,sizeof(packet));
??? if(objConn.Read(&packet,sizeof(packet)) == 0)
?{
??return FALSE;
?}
?REGIST_ACK stRetAck;
?memset(&stRetAck, 0, sizeof(REGIST_ACK));
?if(objConn.Read(&stRetAck,sizeof(REGIST_ACK)) == 0)
?{
??return FALSE;
?}
?else
?{
??strcpy(lpRetErrorMsg,stRetAck.result);
??if (stRetAck.IsRegist == 1)? //圖片上傳成功
???return TRUE;
??else
???return FALSE;
?}
?objConn.Close();
?WSACleanup();
?return TRUE;
}
//通訊包頭定義
struct TPACKHEAD
{
?unsigned char head;?? //頭標志,為88
?unsigned char verifyflag;//為0x0E時,為正確包
?unsigned char command;??//1--掛失庫對時 2--掛失記錄個數下載 3--具體掛失記錄下載
?//4--請求掛失記錄上傳 5--具體掛失記錄上傳
?//6--數據庫中總的掛失記錄個數下載
?//7--數據庫中各個具體掛失記錄下載??
?//11--請求用戶資料上傳
?//12--具體用戶資料上傳
?//13--請求臨時用戶資料上傳
?//14--具體臨時用戶資料上傳
?//15--ID卡變化記錄個數下載
?//16--ID卡具體變化記錄下載
?//17--ID卡數據庫中總的記錄個數下載
?//18--ID卡數據庫中各個具體記錄下載??
?//19--請求驗證ID卡是否已注冊
?//20--上傳用戶ID卡信息
?//21--下載ID庫對時
?//32--驗證證件是否開過卡 實現一人一卡
?//33--發送實名注冊請求
?unsigned char tail;??//尾標志
?unsigned int? len;??//包體的長度
};
typedef struct USER_INFO_GRAPHtag
{
??? char id_num[19];????? //ID卡號碼
?char szBarId[11];???//單位編號
?unsigned char cGraphKind;?//圖片所屬類別(1、照片;2、證件掃描圖)
?char sGraphClass[4];??//圖片格式(如gif,jpg等)
?unsigned long lGraphSize;?//圖片大小
?char *pData;????//圖片數據
}USER_INFO_GRAPH;
struct REGIST_ACK??//add by 張海 20060313
{
??? char IsRegist;?//1:成功? 2:失敗
??? char result[50];?//是否成功或者失敗原因
};