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

📄 creadargument.cpp

📁 网络游戏龙族 完整的登陆器 C++ 源代码
💻 CPP
📖 第 1 页 / 共 4 页
字号:
	ThrunetPort=0;
	char buf[100];
	memset(buf,0,100);

	FILE *fp = Fopen(CommandSlash[0],"rt");
	if(fp==NULL)
	{
		MessageBox(NULL,"Can't Open File.","Error",NULL);
		PostQuitMessage(0);
		return 0;
	}

	fscanf(fp,"%s",buf);
//	MessageBox(NULL,buf,"ip",NULL);	
	strcpy(ThrunetIP,buf);
	if(strlen(buf)<1)
	{
		PostQuitMessage(0);
		return 0;
	}

	fscanf(fp,"%s",buf);
//	MessageBox(NULL,buf,"port",NULL);
	ThrunetPort=atoi(buf);
	if(ThrunetPort<0)
	{
		PostQuitMessage(0);
		return 0;
	}
	
	fscanf(fp,"%s",buf);
	if(strcmp(buf,"thrunet"))
	{
	//	PostQuitMessage(0);
	//	return 0;		//滴风齿捞 酒囱 赤籍捞搁 肋扼 滚赴促
	}
//	MessageBox(NULL,buf,"thrunet",NULL);	

	
	

	HRESULT	hr = NOERROR;
	bool	fComInitialized = false;
	if (FAILED(hr = ::CoInitialize(NULL)))
		_com_issue_error(hr);
	fComInitialized = true;
	thrunet::_clsURLCHKPtr a;
	hr=a.CreateInstance("thrunet.clsURLCHK");
	if(FAILED(hr)) 
	{		
		PostQuitMessage(0);
	//	printf("createinstance error..\n");
		return 0;
	}
	_bstr_t result;
	_bstr_t in_s;	
	in_s = "abcd";	// 狼固绝绰 蔼捞骨肺 弊成 逞败 霖促.	
	result=a->GetID(in_s);     // GedID甫 龋免窍搁 userid啊 逞绢柯促 	
	if(strcmp((char*)result,"*"))	//*搁 角菩, 酒聪搁 蜡历酒捞叼
	{
		memset(UserID,0,sizeof(UserID));
		strcpy(UserID,(char*)result);
		UserIDlength = strlen((char*)result);
		WhatLineIUse=1;
	//	a.Release();
		return 1;
	}
	else
	{
		PostQuitMessage(0);
	//	a.Release();
		return 0;
	}
	
	return 0;
}


bool WaitingTheAnswerForTHTUNET( t_connection *c, short int *answer );


int		CClientBill::Check_Channel_i()		//唱 盲澄酒捞?
{
//	_asm int 3;
	if(CommandNum!=1) return 0;
	if(!strcmp(Command[0],"/lgi"))
	{
		if(Channel_i_StartUP()==1)			
		{
			WhatLineIUse = 2;
			return 1;
		}
		else
		{
			PostQuitMessage(0);
			WhatLineIUse = -2;					
			return 0;
		}		
	}
	return 0;
}


int		CClientBill::Channel_i_StartUP()	//盲澄酒捞俊辑 逞绢柯 何盒. 扼捞宏矾府 肺爹茄促.
{
//	_asm int 3;
	hDll= LoadLibrary("chigamec.dll");
	if(hDll == NULL){
		// Library Loading 角菩. 俊矾 贸府.
		return 0;
	}

	typedef int (CALLBACK* LPFNDLLFUNC)(SessionParameter* lpSP);
	LPFNDLLFUNC lpfnDllFunc;

	lpfnDllFunc = (LPFNDLLFUNC)GetProcAddress(hDll, "WaitForSessionParameter");
	if (!lpfnDllFunc)
	{
		// DWORD dwErr = GetLastError();
		// 俊矾 贸府
		FreeLibrary(hDll);       
		return 0;
	}
	else
	{
		lpfnDllFunc(&m_SessParam);  //Active X肺 何磐 SessionParameter甫 傈崔 罐阑 锭 鳖瘤 措扁窍霸 凳.
					    //捞侩磊啊 秒家甫 窍看阑版快 Return篮 窍瘤父 m_SessParam篮 Null蔼阑 艾霸 凳
	}
	if(lstrlen(m_SessParam.lpszUserName)<1 || lstrlen(m_SessParam.lpszIPAddress)<1 || lstrlen(m_SessParam.lpszPassword)<1)
		return 0;		//捞侩磊啊 弥家茄 版快
	else
	{
		memset(UserID,0,sizeof(UserID));
		strcpy(UserID,m_SessParam.lpszUserName);
		return 1;		//弥家茄 绢恫蔼捞 甸绢啊 乐促.
	}
}

int		CClientBill::Channel_i_SendEncryptedData()	//盲澄酒捞俊辑 力傍茄 dll俊辑 舅酒辑 酒捞叼客 鞠龋甫 傈价茄促.
{
//	WSADATA				wsaData;
//	SOCKET				sockfd;
//	struct sockaddr_in	serv_addr;


	//
	// winsock initialization
	//
//	if (WSAStartup(0x202, &wsaData) == SOCKET_ERROR) {
//		goto cleanup;
//	}

//	memset(&serv_addr, 0, sizeof(serv_addr));
//	serv_addr.sin_family = AF_INET;
//	serv_addr.sin_addr.s_addr = inet_addr(m_SessParam.lpszIPAddress);
//	serv_addr.sin_port = htons(m_SessParam.nPortNum);

//	if ((sockfd = socket(AF_INET, SOCK_STREAM, 0)) < 0) {
//		goto cleanup;
//	}

//	if (connect(sockfd, (struct sockaddr *)&serv_addr, sizeof(serv_addr)) < 0) {
//		goto cleanup;
//	}else{ //connect俊 己傍沁阑锭 官肺 SendEncryptedData窃荐甫 阂矾具 窃.



	typedef int (CALLBACK* LPFNDLLFUNC)(LPCTSTR, LPCTSTR, SOCKET);
	LPFNDLLFUNC lpfnDllFunc;

	lpfnDllFunc = (LPFNDLLFUNC)GetProcAddress(hDll, "SendEncryptedData"); 
	if (!lpfnDllFunc)
	{
		// 俊矾 贸府
		FreeLibrary(hDll);
		return 0;
	}
	else
	{			
		DWORD dwRet = lpfnDllFunc(m_SessParam.lpszUserName, m_SessParam.lpszPassword, connections.socket);
	//	DWORD dwRet = lpfnDllFunc(m_SessParam.lpszUserName, m_SessParam.lpszPassword, connections[curr_connect].socket);
	//	DWORD dwRet = lpfnDllFunc(m_SessParam.lpszUserName, m_SessParam.lpszPassword, sockfd);
		//Data(ID/Pwd)甫 Encryption窍咯 MugProxy俊 傈崔.

		if(dwRet == 0){
			return 1;
			//己傍
		}else{	
			int t=0;
			while(t)
			{
			//	dwRet = lpfnDllFunc(m_SessParam.lpszUserName, m_SessParam.lpszPassword, sockfd);
				dwRet = lpfnDllFunc(m_SessParam.lpszUserName, m_SessParam.lpszPassword, connections.socket);
			//	dwRet = lpfnDllFunc(m_SessParam.lpszUserName, m_SessParam.lpszPassword, connections[curr_connect].socket);
				if(dwRet==0)
					return 1;
				else
					t++;
				if(t>10)	break;
			}
			// 角菩!!
			// Proxy Server肺 何磐 Public Key, Random Seed甫 罐酒 Data甫 Encryption秦辑 焊郴绰 单 角菩窃.
			// 捞锭俊绰 橇肺弊伐阑 辆丰窍带瘤, Reconnect甫 矫档 秦具 窃.
		}

	}

//	}

//	cleanup:

	if (connections.socket)
		closesocket(connections.socket);

//	if (connections[curr_connect].socket)
//		closesocket(connections[curr_connect].socket);

	WSACleanup();
	PostQuitMessage(0);

	return 0;
}

int		CClientBill::Check_Unitel()		//唱 蜡聪炮?
{
	char uni[10]="Unitel&IP",temp[7]="     ";
	for(int i=0;i<CommandNum;i++)
	{
		if(!memcmp(uni,Command[i],9))		//unitel捞扼绰 窜绢啊 乐栏搁
		{
			WhatLineIUse=3;					//蜡聪炮捞扼绊 钎矫
			g_unitel = new CUnicheck;
			return 1;		
		} 
	}
	return 0;
}

int		CClientBill::Unitel_Port()
{
	for(int i=0;i<CommandNum;i++)
	{
		char *p=Command[i];
		for(int len=0;len<lstrlen(Command[i])-9;len++)
		{
			if(!memcmp(Command[i]+len,"&PO:",4))
			{
				int temp=0;
				while(1)
				{
					temp++;
					char haha=(char) *(Command[i]+len+temp);
					if( haha=='&')
					{	
						char haha[20];
						memset(haha,0,20);
						memset(haha,0,sizeof(haha));
						memcpy(haha,Command[i]+len+4,temp-4);
						return(atoi(haha));
					}					
				}
			}
		}
	}
	return 0;
}
//char t[100]="p1.txt Unitel&IP:88.2.100.100&PO:8888&ID:huhaha&NA:辨端&MO:20&P1:&P2:";
int		CClientBill::Unitel_IP()
{
	memset(Return,0,sizeof(Return));
	for(int i=0;i<CommandNum;i++)
	{
		char *p=Command[i];
		for(int len=0;len<lstrlen(Command[i])-9;len++)
		{
			if(!memcmp(Command[i]+len,"&IP:",4))
			{
				int temp=0;
				while(1)
				{
					temp++;
					char haha=(char) *(Command[i]+len+temp);
					if( haha=='&')
					{	
					//	_asm int 3;
						memset(Return,0,sizeof(Return));
						memcpy(Return,Command[i]+len+4,temp-4);
					//	strcat(Return,".unitel.co.kr");
					//	MessageBox(NULL,Return,"IP address from Argument",NULL);
						g_unitel->ReturnUniteIP(Return);
						memset(Return,0,sizeof(Return));
						strcpy(Return,g_unitel->UnitelIP);
					//	MessageBox(NULL,Return,"IP address from Unitel IP return Module",NULL);
						return 1;
					}					
				}
			}
		}
	}
	return 0;
}

//char t[100]="p1.txt Unitel&IP:88.2.100.100&PO:8888&ID:huhaha&NA:辨端&MO:20&P1:&P2:";
char*		CClientBill::Unitel_ID()
{
	memset(UserID,0,sizeof(UserID));
	for(int i=0;i<CommandNum;i++)
	{
		char *p=Command[i];
		for(int len=0;len<lstrlen(Command[i])-9;len++)
		{
			if(!memcmp(Command[i]+len,"&ID:",4))
			{
				int temp=0;
				while(1)
				{
					temp++;
					char haha=(char) *(Command[i]+len+temp);
					if( haha=='&')
					{	
						memset(UserID,0,sizeof(UserID));
						memcpy(UserID,Command[i]+len+4,temp-4);
						return UserID;
					}					
				}
			}
		}
	}
	return 0;
}

int		CClientBill::Unitel_SendMessage()
{
	char dis[7]="UNITEL";
//	SendAliveCheckRoutine();
//	if(Send(dis,1)==0)
//		return 0;
//	else
		return 1;
}



/*
醚 N俺
0		寇何葛碘疙 
1		牢郸胶疙 
2		荤侩磊ID
3		NETSGO Gateway  Server狼 林家		         
4		Gateway 单阁狼 Base PORT锅龋
5		Gateway单阁肮荐 (Multi-Server备炼)
6		辑厚胶Server狼 林家
7		辑厚胶 单阁狼  Port锅龋
8		立加 蜡屈
//9~N-4	[ 扁鸥鞘夸茄 Argument甸 ]	//救敬促
9	N-3	netsgo
10	N-2	牢刘侩Atoms锅龋(Decimal)
11	N-1	宏扼快历滚傈

醚 12俺
*/

int		CClientBill::Check_Netsgo()		//唱 齿明绊?
{	
	if(CommandNum!=11)
	{
		return 0;
	}
	if(atoi(Command[10])<1000)
	{
		return 0;
	}	
	if( strcmp(Command[8],"netsgo") || atoi(Command[9])<0 )
	{
		return 0;
	}
	if(Netsgo_AtomTable()==0)
	{
		return 0;
	}
	WhatLineIUse=4;
	return 1;
}

int		CClientBill::Netsgo_AtomTable()
{
	char  cBuf[256];
	ATOM  hAtom = (ATOM)atoi(Command[9]);

	if  (GlobalGetAtomName( hAtom, cBuf, 256 ) == 0 )  
	{  // Atom蔼捞 粮犁窍绰瘤 Check 
		// 俊矾贸府 begin
		char dis[100];
		sprintf(dis, "some error - %d\n", GetLastError() );
	//	MessageBox(NULL,dis,"",NULL);
		// 俊矾贸府 end 
		return 0;
	} 
       
	if  (lstrcmp(Command[1], cBuf ) )  
	{  // 荤侩磊 ID客 Atom俊 狼茄 String蔼阑 厚背窃 
	   // 俊矾贸府 begin
		char dis[100];
		sprintf(dis, "some error - %d\n", GetLastError() );
	//	MessageBox(NULL,dis,"",NULL);
	   // 俊矾贸府 end 
		return 0;
	}
	memset(UserID,0,sizeof(UserID));
	strcpy(UserID,Command[1]);
	return 1;
}

int		CClientBill::Netsgo_Port()			//齿明绊狼 port甫 馆券
{
	int SERV_PORT_NO = atoi(Command[3]);// = 40007;      /*    argv[4]狼 Base Port蔼 */
    int SERV_PORT_CNT= atoi(Command[4]);// = 5;         /*    argv[5]狼 Port肮荐    */   
    int MAX_PORT_NO = SERV_PORT_NO + SERV_PORT_CNT - 1 ;    /* Connection Retry甫 困窃 */
    int serv_sock = time(0);               /*  Random 贸府甫 困窃 (Language Dependent)  */
    serv_sock  %= SERV_PORT_CNT;  /*  唱赣瘤 蔼阑 荤侩 (Language Dependent)     */

    int daemon_port = SERV_PORT_NO + serv_sock;   /*  Base Port蔼 + 唱赣瘤 */
    return daemon_port;
}

int		CClientBill::Netsgo_IP()			//齿明绊狼 ip甫 馆券	
{
//	_asm int 3;
	
	LPHOSTENT lpHostEnt = gethostbyname((LPCTSTR)Command[2]);	
	if (lpHostEnt)
	{
		IN_ADDR   inAddr;
		memcpy((void*)&inAddr.S_un.S_addr, lpHostEnt->h_addr,lpHostEnt->h_length);
		memset(Return,0,sizeof(Return));
		
		wsprintf(Return,"%d.%d.%d.%d",
			inAddr.S_un.S_un_b.s_b1, 
			inAddr.S_un.S_un_b.s_b2, 
			inAddr.S_un.S_un_b.s_b3, 
			inAddr.S_un.S_un_b.s_b4);
		return 1;
	}	
	return 0;
//	strcpy(Return,"211.39.34.51");
//	sprintf(Return,"%s",Command[2]);  /*  argv[3]狼 Gateway  Server狼 IP Address */
	return 1;
}

int		CClientBill::Netsgo_SendMessage()
{	
//	_asm int 3;
	char argument_string[255];
	memset(argument_string,0,255);
    
	sprintf(argument_string,"DragonRaja.exe %s",CommandLineBackup);
	int len = strlen(argument_string);

	if(Send(argument_string,len)==0)
		return 0;
	if(Receive(2)==0)				//Netsgo绰 2官捞飘肺 焊辰促
		return 0;
	if(!strcmp(Buffer,"~1"))		//multi login捞搁
	{
		MessageBox(NULL,"穿焙啊 酒捞叼甫 静绊 乐嚼聪促.","Netsgo",NULL);
		PostQuitMessage(0);
		return 0;
	}
	else
	{
		return 1;	//泅力 荤侩窍瘤 臼酒档 面盒洒 鞘夸茄 沥焊啊 朝扼埃促.
	}
	return 0;
}

int		CClientBill::Send(char *msg,int len)
{
	int size = len;
	char *dis = new char [size];
	int pnt;

//	_asm int 3;
	memset(dis,0, size );
	memcpy(dis,msg,size);
	

	DWORD cur_time;
	DWORD check_time = timeGetTime();
	int addlen;

	pnt = 0;
	while( 1 )
	{
		addlen = send( connections.socket, dis + pnt , size, 0 );
		if( addlen < 0 ) 
		{
			PostQuitMessage(0);
			return 0;
			// Error..
		}
		else 
		{
			size -= addlen;
			pnt += addlen;

			if( size == 0 )
			{
				//   己傍.
				return 1;
				break;
			}
			else if( size < 0 ) 
			{
				PostQuitMessage(0);
				return 0;
				 // Error.,
			}
		}

		cur_time = timeGetTime();
		if( cur_time - check_time > 5000 ) 
		{
			PostQuitMessage(0);
			return 0;
			//   Error ..    5檬悼救  Packet阑 焊郴瘤 给沁促. 
		}
		else 
		{
			//  酒流篮 矫埃捞 巢疽栏聪 弧府 焊郴..

		}
	}
	return 0;
}

int		CClientBill::SendToPaySocket(char *msg,int len)
{
	int size = len;
	char *dis = new char [size];
	int pnt;

//	_asm int 3;
	memset(dis,0, size );
	memcpy(dis,msg,size);
	

	DWORD cur_time;
	DWORD check_time = timeGetTime();
	int addlen;

	pnt = 0;
	while( 1 )
	{
		addlen = send( sockfd, dis + pnt , size, 0 );	
		if( addlen < 0 ) 
		{		
			PostQuitMessage(0);
			return 0;		
		}
		else 
		{
			size -= addlen;
			pnt += addlen;

			if( size == 0 )
			{				
				return 1;
				break;
			}
			else if( size < 0 ) 
			{			
				PostQuitMessage(0);
				return 0;			
			}
		}

		cur_time = timeGetTime();
		if( cur_time - check_time > 5000 ) 
		{
			PostQuitMessage(0);
			return 0;
			//   Error ..    5檬悼救  Packet阑 焊郴瘤 给沁促. 
		}
		else 
		{
			//  酒流篮 矫埃捞 巢疽栏聪 弧府 焊郴..
		}
	}
	return 0;
}


DWORD global_time_new;
char thrunetanswerbuf[4];
int  thrunetanswerbuf_pnt;
int  thrunetanswerbuf_len;

int		CClientBill::Receive(int len)
{
	memset(Buffer,0,sizeof(Buffer));
	bool ret;	
	if ( !connections.socket )
//	if ( !connections[curr_connect].socket )
	{
		return false;
	}

	Buffer_len = len;
	Buffer_pnt = 0;

	DWORD s_time = timeGetTime();
	DWORD c_time;
	while( 1 ) 
	{
		Sleep(10);
		ret = Receive_sub( &connections );
	//	ret = Receive_sub( &connections[curr_connect] );
		if( ret == true ) 
		{
			return ret;
		}

		c_time = global_time_new;
		if( c_time - s_time > 5000 )
		{
			return false;
		}
	}
	return 0;
}

⌨️ 快捷键说明

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