⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sphttpclient.cpp

📁 Web URL 解析程序客户端
💻 CPP
字号:
#include <sys/types.h>
#include <sys/wait.h>#include "Init.h"//#include "Common.h"#include "ReadConf.h"#include "SMSOperate.h"#include <ejet/Socket.h>//#include <ejet/ServerSocket.h>Init initSystem;int RecvData(CSocket socket, char* szBuff, int iBuffLen);int SendData(CSocket socket, const char* szBuff, int iDataLen);int RetStatus(const char* szBuff);int main(int argc,char *argv[]){	if((argc > 1) && (strcmp(argv[1], "-debug") == 0)) 	{		if(-1 == initSystem.setLog("../log/", "post", true))			return -1;	}	else	{ 		if(-1 == initSystem.setLog("../log/", "post", false))			return -1;	}		if(!initSystem.initInterface("../conf/InterfaceConf.xml", "Interface"))		return -1;		DB db(initSystem.getLog(),"HttpClient");	if(!db.DbOpen(initSystem.getValue("DBSERVER").c_str(),initSystem.getValue("DBUSER").c_str(),initSystem.getValue("DBPWD").c_str()))		return -1;			CSMSOperate objSMSOperate(db, initSystem.getLog());	char szRecvBuff[1024];	SENDSM ssm;	string strHeader="POST "+initSystem.getValue("PATH");	string strURL="";	int iProvider=0;		try{		CSocket client;				while(1)		{				if((iProvider++) >= 1) iProvider = 0;						if(0 == objSMSOperate.GetSendSMS(ssm,iProvider))			{				strURL="";								if(13 == ssm.strDestNum.length())					strURL += "mobile="+ssm.strDestNum.substr(2,11);				else					strURL += "mobile="+ssm.strDestNum;								strURL += "&msg="+ssm.strContent;								if("15108811" == ssm.strSourNum.substr(0,8) || "95108811" == ssm.strSourNum.substr(0,8))					strURL += "&uid=gzhs1&pwd=P4GZHS";				else if("15108822" == ssm.strSourNum.substr(0,8) || "95108822" == ssm.strSourNum.substr(0,8))					strURL += "&uid=gzhs2&pwd=P4GZHS";				else if("15108833" == ssm.strSourNum.substr(0,8) || "95108833" == ssm.strSourNum.substr(0,8))					strURL += "&uid=gzhs3&pwd=P4GZHS";				else if("15108866" == ssm.strSourNum.substr(0,8) || "95108866" == ssm.strSourNum.substr(0,8))					strURL += "&uid=gzhs8&pwd=P4GZHS";				else				{					*initSystem.getLog()<<TIME<<"无效接入号:"<<ssm.strSourNum<<END;					continue;				}								if("3" == ssm.strFeeType || "03" == ssm.strFeeType)				{					if("200" == ssm.strCost)						strURL += "&cost=02";					else if("300" == ssm.strCost)						strURL += "&cost=03";					else if("500" == ssm.strCost)						strURL += "&cost=05";					else if("1000" == ssm.strCost)						strURL += "&cost=10";					else if("1200" == ssm.strCost)						strURL += "&cost=12";					else if("1500" == ssm.strCost)						strURL += "&cost=15";					else if("2000" == ssm.strCost)						strURL += "&cost=20";					else					{						*initSystem.getLog()<<TIME<<"无效资费:"<<ssm.strCost<<END;						continue;					}				}				else if("1" == ssm.strFeeType || "01" == ssm.strFeeType || "2" == ssm.strFeeType || "02" == ssm.strFeeType)				{   					strURL += "&item=" + ssm.strServiceType;					/*					if("0" == ssm.strCost)						strURL += "&cost=000";					else if("10" == ssm.strCost)						strURL += "&cost=010";					else if("20" == ssm.strCost)						strURL += "&cost=020";					else if("40" == ssm.strCost)						strURL += "&cost=040";					else if("50" == ssm.strCost)						strURL += "&cost=050";					else if("60" == ssm.strCost)						strURL += "&cost=060";					else if("80" == ssm.strCost)						strURL += "&cost=080";					else if("100" == ssm.strCost)						strURL += "&cost=100";					else if("150" == ssm.strCost)						strURL += "&cost=150";					else if("200" == ssm.strCost)						strURL += "&cost=200";					else					{						*initSystem.getLog()<<TIME<<"无效资费:"<<ssm.strCost<<END;						continue;					}					*/				}				else				{					*initSystem.getLog()<<TIME<<"无效计费类型:"<<ssm.strFeeType<<END;					continue;				}									if("15108811" == ssm.strSourNum.substr(0,8) || "95108811" == ssm.strSourNum.substr(0,8))					strURL += "&srcmobile=" + ssm.strSourNum.substr(8);								if(!(0 == strcasecmp("0", ssm.strLinkID.c_str()) || 0 == strcasecmp("<NULL>", ssm.strLinkID.c_str())))					strURL += "&linkid=" + ssm.strLinkID;				else					strURL += "&linkid=";										*initSystem.getLog()<<TIME<<"UP URL: "<<strURL<<END;				strURL = strHeader + strURL + "\r\n\r\n";								client.Connect(initSystem.getValue("INTERFACEIP"), atoi(initSystem.getValue("INTERFACEPORT").c_str()));							if(SendData(client,strURL.c_str(),strURL.length()) > 0)				{						memset(szRecvBuff, 0, 1024);					if(RecvData(client,szRecvBuff,1024) > 0)					{						int iRet=-1;						switch(iRet=RetStatus(szRecvBuff))						{							case 0:								objSMSOperate.UpdateSended(ssm);								break;							case 1:							case 2:							case 3:							case 4:							case 5:							case 6:							case 7:							case 8:							case 9:							case 10:							case -1:								*initSystem.getLog()<<TIME<<"UP MSG ERROR: "<<iRet<<END;								break;							default:								*initSystem.getLog()<<TIME<<"UP MSG ERROR: UNKNOWN"<<END;								break;						}					}					}				client.Close();			}			else				sleep(1);		}	}	catch (CSocketException& e){		*initSystem.getLog()<<TIME<<"Socket exception:" << e.GetMessage().c_str() <<END;
	}		return 0;}int RecvData(CSocket socket, char* szBuff, int iBuffLen){	int iRet = 0;	if(NULL == szBuff) return iRet;	if(1 > iBuffLen)  return iRet;	if((iRet = socket.CanReceive(atoi(initSystem.getValue("RECVTIMEOUT").c_str())*1000*1000)) < 1)	{		*initSystem.getLog()<<TIME<<"Can not receive any from client. ret="<<iRet<< END;
		return iRet;	}		memset(szBuff, 0, iBuffLen);	if((iRet = socket.Receive(szBuff, iBuffLen-1)) < 1)
	{
		*initSystem.getLog()<<TIME<<"Fail to receive from client. ret="<<iRet<< END;
	}	else	{		//*initSystem.getLog()<<TIME<<"receive data:["<<iRet<<"]\n"<<szBuff<< END;		}		return iRet;	}int SendData(CSocket socket, const char* szBuff, int iDataLen){	int iRet = 0;	if(NULL == szBuff) return iRet;		if(1 > iDataLen)  return iRet;		if((iRet = socket.CanSend(atoi(initSystem.getValue("SENDTIMEOUT").c_str())*1000*1000)) < 1)
	{		*initSystem.getLog()<<TIME<<"Can not send any to client. ret=" << iRet << END;		return iRet;	}		if((iRet = socket.Send(szBuff, iDataLen)) < 1)	{		*initSystem.getLog()<<TIME<<"Can not send any to client. ret=" << iRet << END;	}	else	{		//*initSystem.getLog()<<TIME<<"send data:["<<iRet<<"]\n"<<szBuff<<END;	}		return iRet;}int RetStatus(const char* szBuff){	if(NULL == szBuff) return -1;		try{	char szErrCode[3]={0};	char *str;	if(NULL == (str=strstr(szBuff,"Content-Length: ")))	{		*initSystem.getLog()<<TIME<<"<"<<szBuff<<"> not exist <"<<"Content-Length: "<<">"<<END;		return -1;	}	if((strlen(str)-strlen("Content-Length: ")) < 3)	{		*initSystem.getLog()<<TIME<<"<"<<szBuff<<"> error code invalid."<<END;		return -1;	}	
	str+=strlen("Content-Length: ");	if(str[0] >= 0x30 && str[0] <= 0x39)		szErrCode[0]=str[0];	else	{		*initSystem.getLog()<<TIME<<"<"<<szBuff<<"> error code invalid."<<END;		return -1;	}	if(str[1] >= 0x30 && str[1] <= 0x39)		szErrCode[1]=str[1];			int iLen = atoi(szErrCode);		memset(szErrCode,0,3);		if(1 == iLen && (str[strlen(str)-1] >= 0x30 && str[strlen(str)-1] <= 0x39))		szErrCode[0]=str[strlen(str)-1];	else if(2 == iLen && (str[strlen(str)-1] >= 0x30 && str[strlen(str)-1] <= 0x39) && (str[strlen(str)-2] >= 0x30 && str[strlen(str)-2] <= 0x39))	{		szErrCode[0]=str[strlen(str)-2];		szErrCode[1]=str[strlen(str)-1];	}	else if('0' == str[strlen(str)-iLen] && ':' == str[strlen(str)-iLen+1]) 	{		*initSystem.getLog()<<TIME<<"MSGID["<<str+strlen(str)-iLen+2<<"]"<<END;		return 0;		}	else	{		*initSystem.getLog()<<TIME<<"<"<<szBuff<<"> error code invalid."<<END;		return -1;	}	return atoi(szErrCode);	}catch(...){		*initSystem.getLog()<<TIME<<"RetStatus exception."<<END;		return -1;		}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -