亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? msnloginclient.cpp

?? 網(wǎng)絡(luò)編程
?? CPP
?? 第 1 頁 / 共 3 頁
字號:
// CMsnLoginClient.cpp : implementation file
//

#include "stdafx.h"
#include "SimMsnMessenger.h"
#include "SimMsnMessengerView.h"
#include "MsnLoginClient.h"
#include "MsnSocket.h"

#include <afxinet.h>

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern char  agCurDir[];
/////////////////////////////////////////////////////////////////////////////
// CMsnLoginClient

CMsnLoginClient::CMsnLoginClient( )
{
	//m_pView		= pView;
	 
	m_pSocket	= NULL;
	m_strCurChannel =	CString("");
	m_strHostIPAddress = CString("");
	m_strServerName =		CString("");
	m_strMyNickName =		CString("");

	m_strClientMsg =  CString("");
	m_strRecvMsg = CString("NULL");

	m_strlstDisplay.RemoveAll();
	m_iSendXh=1;
	m_iLoginOk=0;
	m_iCountUser=0;
	m_iXfrSbUserNo=99999;
}

CMsnLoginClient::~CMsnLoginClient()
{
	if(m_pSocket != NULL) 
	{
		FileLog("->斷開服務器連接!");
		m_pSocket->ShutDown(2);
		m_pSocket->Close();
		delete m_pSocket;
		m_pSocket = NULL;
	}

}

void CMsnLoginClient::Init()
{

	//build the socket link
	//FileLog("Socket connect :[%s,%d]",m_strServerName,6667); 
	if( !ClientConnectSocket(m_strServerName,1863) )  //connect the default server
	{
		FileLog("Socket connect  Error"); 
	}

	if(m_pSocket == NULL) return;
	 
}

 
 



void CMsnLoginClient::DoPrivmsg(LPCSTR lpszWho,LPCSTR lpszMessage)
{
	char	buf[512];
	int		iTem;

	//the message len is must less 510
	if(strlen(lpszMessage) > 510)
	{
		buf[510] = '\0';
		buf[511] = '\0';
	}

	//check the lpszWho , if the string is: "#chinese"  --> "chinese"

	if(m_pSocket == NULL) return;
	sprintf(buf, "PRIVMSG %s :%s",lpszWho,lpszMessage);
	iTem = strlen(buf);
	buf[iTem] = 0x0d;
	buf[iTem+1] = 0x0a;
	buf[iTem+2] = 0x00;
	m_pSocket->Send( (void*)buf, strlen(buf));

}

BOOL CMsnLoginClient::ClientConnectSocket(LPCTSTR lpszHostname,UINT nPort)
{
	char	buf[512];
	int		iTem;
	int     iConTimes=0;
	
	m_pSocket = new CMsnSocket(this);

	FileLog("->開始連接到服務器[%s,%d] ...... ",lpszHostname,nPort);
	if (!m_pSocket->Create())
	{
		//??
		m_pSocket->Close();

		//??? 1998-07-21 closesocket();
		delete m_pSocket;
		m_pSocket = NULL;
		FileLog("CMsnLoginClient::ClientConnect ->SocketSocket Create Error");
		return FALSE;
	}
	iConTimes++;
	while(!m_pSocket->Connect(lpszHostname, nPort) )
	{
		iConTimes++;
		FileLog("->嘗試第%d次連接到服務器[%s,%d] ......",iConTimes,lpszHostname,nPort);
		//一但不成功,server 端的 nPort 口就被占用而 cbkcomsrv cannot startup ?????
		if (AfxMessageBox("ReConnect again?",MB_YESNO) == IDNO)
		{
			m_pSocket->Close();
			
			//??? 1998-07-21 closesocket();
			delete m_pSocket;
			m_pSocket = NULL;
			CString strTmp;
			strTmp.Format( "Socket connect[%s:%d] fail!",lpszHostname, nPort) ;
			AfxMessageBox(strTmp);
		
			return FALSE;
		}

	}

	//AfxMessageBox("Socket connect successfully");

	//Init:
	m_pSocket->m_pFile = new CSocketFile(m_pSocket);
	m_pSocket->m_pArchiveIn = new CArchive(m_pSocket->m_pFile,CArchive::load);
	m_pSocket->m_pArchiveOut = new CArchive(m_pSocket->m_pFile,CArchive::store);


	//Connect the host:
	//send the nickname:
	m_iSendXh++;
	sprintf( buf,"VER %d MSNP9 MSNP8 CVR0",m_iSendXh);
	iTem = strlen(buf);
	buf[iTem] = 0x0d;
	buf[iTem+1] = 0x0a;
	buf[iTem+2] = 0x00;
 
	m_pSocket->Send( (void*)buf, strlen(buf));

	CString strTemp;
	//m_pSocket->GetSockName( m_pSocket->m_strIPAddress, m_pSocket->m_uPort );
	
	return TRUE;
}


void CMsnLoginClient::ParseRecvedStr(CString strMsg)
{
	 
	CString strPrefix,strCommand,strParams;
	CString strTem,strTem2;
	CString strChannel,strWhoTalkToMe;

	char	buf[500];
	int		iTem;
	char alTmp0[1000],alTmp1[100],alTmp2[100],alTmp3[100],alTmp4[1000],alTmp5[1000],alTmp6[1000],alTmp7[1000];
	unsigned int i=0;
	
    FileLog("Parse[%s]",(LPCTSTR)strMsg);
	//MSN Messenger命令使用純ASCII碼。對非ASCII碼字符使用URL編碼。
	//命令的語法是
	//XXX[<SP>TrID<SP>PARAM1<SP>PARAM2…]<CRLF>
	//其中,<SP>是空白字符,<CRLF>是回車換行,
	//XXX是一個3字符的命令串,TrID是一個流水號,PARAMx是參數(shù),
	//[ ]內(nèi)是可選項。最簡單的命令沒有流水號和參數(shù)。
	//為了方便起見,下面討論時用" "代表<SP>,"\r\n"代表<CRLF>,
	//"\x??"代表一個值為0x??字節(jié)。
	//USR 18 TWN I example@hotmail.com\r\n

	strCommand = strMsg.Mid(0,3);
	if(strCommand == CString("VER"))
	{
		memset(buf,0x00,sizeof(buf));
		m_iSendXh++;
		sprintf(buf, "CVR %d 0x0409 winnt 5.1 i386 MSNMSGR 6.0.0602 MSMSGS %s",m_iSendXh,(LPCTSTR)m_strMyNickName);
		iTem = strlen(buf);
		buf[iTem] = 0x0d; buf[iTem+1] = 0x0a; buf[iTem+2] = 0x00;
		m_pSocket->Send( (void*)buf, strlen(buf));
 	}
	else if(strCommand == CString("CVR"))
	{
		memset(buf,0x00,sizeof(buf));
		m_iSendXh++;
		sprintf(buf, "USR %d TWN I %s",m_iSendXh ,(LPCTSTR)m_strMyNickName);
		iTem = strlen(buf);
		buf[iTem] = 0x0d; buf[iTem+1] = 0x0a; buf[iTem+2] = 0x00;
		m_pSocket->Send( (void*)buf, strlen(buf));
 	}
	else if(strCommand == CString("XFR"))
	{
		//XFR 3 NS 207.46.107.104:1863 0 207.46.104.20:1863%0d%0a
		 
		memset(alTmp0,0x00,sizeof(alTmp0));
		memset(alTmp1,0x00,sizeof(alTmp1));
		memset(alTmp2,0x00,sizeof(alTmp2));
		memset(alTmp3,0x00,sizeof(alTmp3));
		memset(alTmp4,0x00,sizeof(alTmp4));
		memset(alTmp5,0x00,sizeof(alTmp5));
		memset(alTmp6,0x00,sizeof(alTmp6));
		
		sprintf(alTmp0,"%s",(LPCTSTR)strMsg);
		sscanf(alTmp0,"%s %s %s %s %s %s",alTmp1,alTmp2,alTmp3,alTmp4,alTmp5,alTmp6);
		FileLog("XFR: %s %s %s %s %s %s",alTmp1,alTmp2,alTmp3,alTmp4,alTmp5,alTmp6);
		
		unsigned int ilLen=strlen(alTmp4);

		for( i=2; i < ilLen ; i++ ) 
		{
			if( alTmp4[i]== ':' ) break;
		}
		alTmp4[i]=0x00;

		m_strServerName.Format("%s",alTmp4);

		if( memcmp(alTmp3,"NS",2 ) == 0 )
		{
			FileLog("PostMessage(WPARAM, LPARAM lParam)");
			AfxGetApp()->m_pMainWnd->PostMessage( WM_MY_MESSAGE, 0, 0 );
		}
		else if( memcmp(alTmp3,"SB",2 ) == 0 )
		{
			FileLog("XFR SB  返回分配SS請求的應答");
			//XFR+13+SB+207.46.108.46:1863+CKI+52265.1116983946.14855
			if( m_iXfrSbUserNo < m_iCountUser )
			{
				
				FileLog("XFR SB:NS->[聯(lián)系人: i=[%d](%s) ...]", m_iXfrSbUserNo,(LPCTSTR)m_MsnUser[m_iXfrSbUserNo]->m_strEmail );
				m_MsnUser[m_iXfrSbUserNo]->m_strSessionID.Format("%s",alTmp1);
				m_MsnUser[m_iXfrSbUserNo]->SBInit(alTmp4,alTmp6);
			}
			m_iXfrSbUserNo=99999;
		}
	 
 	}
	else if(strCommand == CString("USR"))
	{
		//USR 7 TWN S lc=1033,id=507,tw=40,fs=1,ru=http%3A%2F%2Fmessenger%2Emsn%2Ecom,ct=1116208791,kpp=1,kv=6,ver=2.1.6000.1,tpf=3dc9e50a9b371f27a912e60c0fa95a62
 
		memset(alTmp0,0x00,sizeof(alTmp0));
		memset(alTmp1,0x00,sizeof(alTmp1));
		memset(alTmp2,0x00,sizeof(alTmp2));
		memset(alTmp3,0x00,sizeof(alTmp3));
		memset(alTmp4,0x00,sizeof(alTmp4));
		memset(alTmp5,0x00,sizeof(alTmp5));

		sprintf(alTmp0,"%s",(LPCTSTR)strMsg);
		sscanf(alTmp0,"%s %s %s %s %s",alTmp1,alTmp2,alTmp3,alTmp4,alTmp5);
		FileLog("USR : %s %s %s %s",alTmp1,alTmp2,alTmp3,alTmp4,alTmp5);
		
		//USR 7 OK tcpip_2005@126.com tcpip_2005@126.com 1 0 \r\n 
		if( memcmp( alTmp3 ,"OK", 2) == 0 )
		{
			FileLog("MSN Login OK !");
			m_iLoginOk=1;
			m_strNick.Format("%s", alTmp5 );
			//SYN+8+0%0d%0a
				memset(buf,0x00,sizeof(buf));
				m_iSendXh++;
				sprintf(buf, "SYN %d 0",m_iSendXh );
				iTem = strlen(buf);
				buf[iTem] = 0x0d; buf[iTem+1] = 0x0a; buf[iTem+2] = 0x00;
				m_pSocket->Send( (void*)buf, strlen(buf));

			return ;
		}
		else if( memcmp( alTmp3 ,"TWN", 3) == 0 )
		{
			FileLog("MSN 通過SSL的認證 ... ");
			
		}

		//通過SSL的認證過程如下: 

		//首先在HTTPS端口443向login.passport.com發(fā)送一個GET請求,
		//將賬號、密碼和NS給定的一長串信息送出 
		memset(alTmp4,0x00,sizeof(alTmp4));
		int ilRet;
		ilRet = DoHTTPSAuthentication(alTmp5,alTmp4);
		//在服務器認證成功的返回信息中,
		//Authentication-Info字段的from-PP串值,就是所謂的“入場券”。 
		if( ilRet == 0 )
		{
				memset(buf,0x00,sizeof(buf));
				m_iSendXh++;
				sprintf(buf, "USR %d TWN S %s",m_iSendXh,alTmp4 );
				iTem = strlen(buf);
				buf[iTem] = 0x0d; buf[iTem+1] = 0x0a; buf[iTem+2] = 0x00;
				m_pSocket->Send( (void*)buf, strlen(buf));
		}
		else
		{
			//如果認證失敗,服務器返回401錯誤 
			FileLog("如果認證失敗,服務器返回401錯誤");
		}

	}
	else if(strCommand == CString("SYN"))
	{
		
		FileLog("SYN ...");
		// CHG+9+NLN+268435492%0d%0a]
		memset(buf,0x00,sizeof(buf));
		m_iSendXh++;
		sprintf(buf, "CHG %d NLN 268435492",m_iSendXh );
		iTem = strlen(buf);
		buf[iTem] = 0x0d; buf[iTem+1] = 0x0a; buf[iTem+2] = 0x00;
		m_pSocket->Send( (void*)buf, strlen(buf));

	}
	else if(strCommand == CString("CHG"))
	{
	 
		//[BLP+10+BL%0d%0aXFR+11+SB%0d%0a]

	 	memset(buf,0x00,sizeof(buf));
		m_iSendXh++;
		sprintf(buf, "BLP %d BL",m_iSendXh );
		iTem = strlen(buf);
		buf[iTem] = 0x0d; buf[iTem+1] = 0x0a; buf[iTem+2] = 0x00;
		m_pSocket->Send( (void*)buf, strlen(buf));
		DispMainPage();

	}
	else if(strCommand == CString("CHL"))
	{
		 
		//CHL+0+84992517860471275122%0d%0a]
	    //QRY+12+PROD0038W!61ZTF9+32%0d%0a23036a07c59a61ea54bf64930ee3689d]
		FileLog("CHL 服務器發(fā)出驗證要求..");
		
		memset(alTmp0,0x00,sizeof(alTmp0));
		memset(alTmp1,0x00,sizeof(alTmp1));
		memset(alTmp2,0x00,sizeof(alTmp2));
		memset(alTmp3,0x00,sizeof(alTmp3));
		memset(alTmp4,0x00,sizeof(alTmp4));
	 
		sprintf(alTmp0,"%s",(LPCTSTR)strMsg);
		sscanf(alTmp0,"%s %s %s",alTmp1,alTmp2,alTmp3 );
		FileLog("CHL : %s %s %s",alTmp1,alTmp2,alTmp3 );
		DoMD5( alTmp3, alTmp4 );
		memset(buf,0x00,sizeof(buf));
		m_iSendXh++;
		sprintf(buf, "QRY %d PROD0038W!61ZTF9 32\r\n%s",m_iSendXh ,alTmp4);
		iTem = strlen(buf);
		buf[iTem] = 0x00;
		m_pSocket->Send( (void*)buf, strlen(buf));

	}
	else if(strCommand == CString("LSG"))
	{
	 
		FileLog("LSG :獲取聯(lián)系人(組列表)請求的應答!");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
蜜桃视频免费观看一区| 日韩欧美国产wwwww| 日韩一区和二区| 国产精品私人自拍| 韩国精品在线观看| 777色狠狠一区二区三区| 国产精品第13页| 国产成人在线看| 欧美videofree性高清杂交| 亚洲高清免费在线| 99久久精品久久久久久清纯| 久久久久久久久岛国免费| 日韩精品1区2区3区| 欧美日韩国产小视频在线观看| 国产精品美女久久久久高潮| 国产一区二区三区四| 欧美精选一区二区| 亚洲电影一区二区| 91极品视觉盛宴| 亚洲另类一区二区| 一本久久a久久免费精品不卡| 国产日产精品一区| 国产九九视频一区二区三区| 日韩一级片在线观看| 丝袜亚洲另类欧美| 91精品国产综合久久蜜臀 | 《视频一区视频二区| 高清不卡在线观看av| 久久九九全国免费| 国产盗摄精品一区二区三区在线| 日韩精品最新网址| 精品一区二区三区在线观看| 日韩一区二区影院| 麻豆免费看一区二区三区| 日韩三级视频中文字幕| 激情久久久久久久久久久久久久久久| 久久综合久久99| 丁香激情综合国产| 中文字幕中文乱码欧美一区二区| av成人免费在线观看| 一区二区三区四区精品在线视频| 91丨九色丨尤物| 亚洲国产日韩在线一区模特| 欧美电影一区二区三区| 久久精品久久99精品久久| 久久久影视传媒| 91同城在线观看| 亚洲一级在线观看| 欧美成人福利视频| 不卡的av中国片| 亚洲国产精品视频| 精品国产一二三区| 成人伦理片在线| 亚洲国产精品久久久久婷婷884| 欧美猛男男办公室激情| 国精产品一区一区三区mba视频| 国产三区在线成人av| 91麻豆国产在线观看| 日韩电影一区二区三区| 久久久99免费| 91国产福利在线| 国产一区啦啦啦在线观看| 亚洲视频一区二区在线观看| 91精品国产综合久久婷婷香蕉 | 久久理论电影网| 91丝袜美女网| 久久99国产精品久久99| 亚洲天堂a在线| 欧美一区二区三区思思人 | 精品无人区卡一卡二卡三乱码免费卡 | 精品久久久久一区| 色爱区综合激月婷婷| 国产乱码精品一品二品| 亚洲国产日韩a在线播放性色| 久久久国产精品午夜一区ai换脸| 欧美性受极品xxxx喷水| 麻豆91免费看| 亚洲男人的天堂在线观看| 欧美va亚洲va香蕉在线| 色天天综合色天天久久| 国产大陆精品国产| 爽好久久久欧美精品| 综合色中文字幕| 久久久久9999亚洲精品| 日韩一区二区三区视频在线| 99视频精品在线| 国产一区二区福利视频| 天堂成人免费av电影一区| 亚洲裸体在线观看| 中文字幕乱码久久午夜不卡 | 欧美在线观看禁18| 成人av电影在线观看| 精品在线免费视频| 日本女人一区二区三区| 亚洲一区二区在线免费看| 国产精品久久久久久久久免费丝袜 | 在线精品亚洲一区二区不卡| 国产精品18久久久久久vr| 免费看欧美女人艹b| 亚洲成人免费av| 亚洲最大成人综合| 国产日韩欧美精品电影三级在线| 欧美不卡一二三| 日韩一区二区三区在线观看| 欧美精品亚洲二区| 欧美日韩一区二区在线视频| 色综合久久六月婷婷中文字幕| av中文字幕在线不卡| 成人av网站免费观看| 成人小视频在线| 不卡的电影网站| 91视频免费看| 色综合久久久久久久久| 色哟哟精品一区| 在线视频亚洲一区| 在线观看中文字幕不卡| 欧美少妇bbb| 欧美日韩国产综合草草| 日韩一区二区三区三四区视频在线观看| 69堂成人精品免费视频| 欧洲国内综合视频| 欧美麻豆精品久久久久久| 91精品国产一区二区三区蜜臀| 欧美丰满嫩嫩电影| 精品美女一区二区| 日本一区二区视频在线观看| 亚洲欧洲www| 亚洲午夜电影在线| 日韩黄色在线观看| 极品少妇一区二区三区精品视频| 国产一区二区三区免费| 成人a级免费电影| 欧美影视一区二区三区| 日韩精品一区二区三区四区| 国产色婷婷亚洲99精品小说| 亚洲精品美腿丝袜| 视频一区视频二区在线观看| 久久99在线观看| 91香蕉视频mp4| 欧美一区2区视频在线观看| www激情久久| 亚洲精品免费电影| 精品一区二区三区av| 91欧美激情一区二区三区成人| 欧美日韩国产综合一区二区三区| 久久综合久久综合久久综合| 亚洲欧美综合在线精品| 天天综合色天天| 成人小视频在线| 欧美高清视频不卡网| 中国色在线观看另类| 三级不卡在线观看| 成人激情动漫在线观看| 7777精品伊人久久久大香线蕉完整版 | caoporen国产精品视频| 91麻豆精品国产| 中文字幕在线观看不卡| 日韩va欧美va亚洲va久久| jizz一区二区| 欧美一区二区大片| 一区二区三区不卡视频| 国产精品一二三在| 777久久久精品| 亚洲精选在线视频| 国产成人激情av| 日韩精品一区二| 亚洲超碰97人人做人人爱| 成人动漫一区二区在线| 日韩午夜激情免费电影| 亚洲综合男人的天堂| 国产mv日韩mv欧美| 日韩欧美专区在线| 亚洲第一福利视频在线| 93久久精品日日躁夜夜躁欧美| 26uuu精品一区二区三区四区在线| 午夜久久久久久久久| 色噜噜狠狠成人中文综合| 中文字幕第一区| 国产激情一区二区三区四区 | 欧美视频一区二| 一区二区三区在线视频免费| 国产不卡一区视频| 久久综合久久综合亚洲| 狂野欧美性猛交blacked| 91精品国产色综合久久久蜜香臀| 亚洲激情图片小说视频| 99re66热这里只有精品3直播 | 91小视频在线观看| 国产精品护士白丝一区av| 国产美女视频一区| 精品理论电影在线| 久久精品国产99| 精品国产一区二区三区久久久蜜月| 奇米在线7777在线精品| 欧美日韩不卡在线| 日韩中文欧美在线| 欧美一卡二卡三卡| 久久97超碰色| 亚洲国产精品二十页| 成人黄色电影在线|