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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? serverprogramdlg.cpp

?? Client 和Server 配套的網絡連接程序。
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
	_itoa(nUsersOnline, strUsersOnline, 10);
	_itoa(nTotalUsers, strTotalUsers, 10);
	m_nUsersOnline = strUsersOnline;
	m_nTotalUsers = strTotalUsers;
	UpdateData(false);

	//If the Server is in the System Tray update its mouse over text
	if (bSystemTray && bMinimized_)
		pTrayIcon_->SetTooltipText("Total Users Connected: " + m_nTotalUsers + " Users Currently Online: " + m_nUsersOnline);


	//If Sound is enabled, make a beep to signify a user connection.
	if (bSound)
		MessageBeep(0xFFFFFFFF);

	return (0);
}

//Called whenever a User disconnects from the Server
LRESULT CServerProgramDlg::OnUserDisconnect(WPARAM message,LPARAM nSocket)
{
    int *pUser = (int *)nSocket;
	int nUser = (int)pUser;
	CString userName;

	for (int x=m_Users.GetItemCount()-1;x>-1;x--)
	{
		if (atoi(m_Users.GetItemText(x,1))==nUser)
		{
			//If User Logging is enabled, this code logs the disconnecting of the user.
			if (bLog)	
			{
				userName = m_Users.GetItemText(x,0);
				GetLocalTime(&st);
				GetTimeFormat(LOCALE_USER_DEFAULT,DATE_LONGDATE,&st,NULL,szTime,80);
				GetDateFormat(LOCALE_USER_DEFAULT,DATE_LONGDATE,&st,NULL,szDate, 80);
				log.SeekToEnd();
				log.WriteString(userName+" Disconnected On "+CString(szDate)+" at "+szTime+"\n");
			}
			//This delets the user off the list control.
			m_Users.DeleteItem(x);
			//This reduces the number of users online by one
			nUsersOnline--;
			char strUsersOnline[8];
			_itoa(nUsersOnline, strUsersOnline, 10);
			m_nUsersOnline = strUsersOnline;
			UpdateData(false);

			//If the Server is in the System Tray update its mouse over text
			if (bSystemTray && bMinimized_)
				pTrayIcon_->SetTooltipText("Total Users Connected: " + m_nTotalUsers + " Users Currently Online: " + m_nUsersOnline);
		}
	}
	return (0);
}

//This is called when a message arrives from any User. Ignore its contents, as
//it fixes the message up and sends it to MessageReceive, which is where you should focus.
//Just a note: Never use the character '<' in your messages, as this will screw things up!
LRESULT CServerProgramDlg::OnReceiveMessage(WPARAM receiveMessage,LPARAM nSocket)
{
	char *pMessage = (char *)receiveMessage;
	CString message = pMessage;
    int *pSocket = (int *)nSocket;
	int numSocket = (int)pSocket;

	MessageReceive(message,numSocket);
	return (0);
}
		
void CServerProgramDlg::MessageReceive(CString message, int numSocket)
{
	if (message[0] == 'A') // User Sending message intended for another user
	{
		message.Delete(0);
		CString targetUser = ParseMessage(message,1);
		message = message.Mid(targetUser.GetLength()+1);
		SendUserMessage(message, atoi(targetUser));
	}

	else if (message[0] == 'B') // User Sending message intended for all users
	{
		message.Delete(0);
		SendAllUsersMessage(message);
	}

	else if (message[0] == 'C') // User Sending message to all users but one
	{
		message.Delete(0);
		CString exceptionUser = ParseMessage(message,1);
		message = message.Mid(exceptionUser.GetLength()+1);
		SendAllUsersMessageExceptForOne(message, atoi(exceptionUser));
    }

	else if (message[0] == 'D') // User Sending the server a message
	{
		message.Delete(0);

		if (message[0] == 'C') // User requesting to connect
		{
			message.Delete(0);
			//Parses the message to get their name, version, and password.
			CString userName = ParseMessage(message, 1);
			CString userVersion = ParseMessage(message, 2);
			CString userPassword = ParseMessage(message, 3);

			int result = UserLogOn(userName, userVersion, userPassword, numSocket);
			if (result==-1) //User's Version not correct
				SendUserMessage("1", numSocket);
			else if (result==-2) //User's Password not correct
				SendUserMessage("3", numSocket);
			else if (result==0) //Inform User they are logged on.
			{
				SendUserMessage("2", numSocket);
				SendAllUsersUserList();
			}
		}
	}
	
	// Add any other message receiving code here //

}

//This code helps to parse individual messages.  See MessageReceive for how
//to use it.
CString CServerProgramDlg::ParseMessage(CString message, int nSlot)
{
	int TempSize;
	CString singleMessage;
	for (int x=0;x<nSlot;x++)
	{
		TempSize=message.Find("|",0);
		if (TempSize==-1)
			return "ERROR";
		singleMessage=message.Left(TempSize);
		message=message.Mid(TempSize+1);
	}
	return singleMessage;
}

//Sends a User a message.  This function is used by the other functions,
//and you probably won't need to call it directly.
void CServerProgramDlg::GiveMessage(CString message, int nSock)
{
	long messageLength = message.GetLength();
	//Sends the length of the message to the client
	Sock[nSock].Send(&messageLength,4);
	//Sends the actual message to the client
	Sock[nSock].Send(message, messageLength);
}

//Sends a user a message
void CServerProgramDlg::SendUserMessage(CString message, int nSock)
{
	GiveMessage(message, nSock);
}

//Sends all users connected a message
void CServerProgramDlg::SendAllUsersMessage(CString message)
{
	for (int x=0;x<m_Users.GetItemCount();x++)
		GiveMessage(message, atoi(m_Users.GetItemText(x,1)));
}

//Sends all users connected a message except for the user with socket nSock.
void CServerProgramDlg::SendAllUsersMessageExceptForOne(CString message, int nSock)
{
	for (int x=0;x<m_Users.GetItemCount();x++)
	{
		if (atoi(m_Users.GetItemText(x,1)) != nSock)
			GiveMessage(message, atoi(m_Users.GetItemText(x,1)));
	}
}

//Sends all users the list of users online
void CServerProgramDlg::SendAllUsersUserList()
{
	CString UserInfo;
	for (int x=0;x<m_Users.GetItemCount();x++)
	{
		UserInfo += m_Users.GetItemText(x,0)+"|"+m_Users.GetItemText(x,1);
	}

	SendAllUsersMessage("4"+UserInfo);
}

//Reads the saved server settings which are stored in the registry (so that you don't have
//to reselect each option each time you run the server).
int CServerProgramDlg::ReadSettings()
{
	//These are the default settings the FIRST time that this program is run.
	if (!Registry.Open(HKEY_LOCAL_MACHINE,"Software\\ServerProgram"))
	{
		bSound = false;
		bLog = false;
		logPath = "C:\\Server.log";
		bVersionCheck = false;
		version = "1.0";
		bPassword = false;
		userFilePath = "C:\\Users.ini";
		nPort = 4306;
		bSystemTray = true;
		bMaintenance = false;
		nMaintenanceDays = 90;
		return (1);
	}

	//Reads all the saved settings.
	if (Registry.CreateKey(HKEY_LOCAL_MACHINE,"Software\\ServerProgram",""))
	{
		Registry.Open(HKEY_LOCAL_MACHINE,"Software\\ServerProgram");

		DWORD soundBuffer;
		if (Registry.ReadDWORD("Sound",&soundBuffer))
			if (soundBuffer==1)
				bSound = true;
			else
				bSound = false;

		DWORD logBuffer;
		if (Registry.ReadDWORD("Log",&logBuffer))
			if (logBuffer==1)
				bLog = true;
			else
				bLog = false;
		
		char logPathBuffer[50];
		if (Registry.ReadString("Log Path",logPathBuffer,50))
			logPath = logPathBuffer;

		DWORD versionCheckBuffer;
		if (Registry.ReadDWORD("Version",&versionCheckBuffer))
			if (versionCheckBuffer==1)
				bVersionCheck = true;
			else
				bVersionCheck = false;
		
		char versionBuffer[50];
		if (Registry.ReadString("Version Number",versionBuffer,50))
			version = versionBuffer;
		
		DWORD passwordBuffer;
		if (Registry.ReadDWORD("Password",&passwordBuffer))
			if (passwordBuffer==1)
				bPassword = true;
			else
				bPassword = false;
		
		char userFilePathBuffer[50];
		if (Registry.ReadString("User File",userFilePathBuffer,50))
			userFilePath = userFilePathBuffer;

		DWORD portBuffer;
		if (Registry.ReadDWORD("Port",&portBuffer))
			nPort = portBuffer;

		DWORD systemTrayBuffer;
		if (Registry.ReadDWORD("System Tray",&systemTrayBuffer))
			if (systemTrayBuffer==1)
				bSystemTray = true;
			else
				bSystemTray = false;

		DWORD maintenanceBuffer;
		if (Registry.ReadDWORD("Maintenance",&maintenanceBuffer))
			if (maintenanceBuffer==1)
				bMaintenance = true;
			else
				bMaintenance = false;

		DWORD maintenanceDaysBuffer;
		if (Registry.ReadDWORD("Maintenance Days",&maintenanceDaysBuffer))
			nMaintenanceDays = maintenanceDaysBuffer;
	}
	return (0);
}

//Called when you want to update the Settings.
void CServerProgramDlg::OnSettings() 
{
	//for checking if the server, log file, or user file will need to be reinitialized.
	int nOriginalPort = nPort;
	CString originalLogPath = logPath;
	CString originalUserFilePath = userFilePath;

	Settings Settings;

	Settings.m_Sound = bSound;
	Settings.m_Log = bLog;
	Settings.m_LogFile = logPath;
	Settings.m_Version = bVersionCheck;
	Settings.m_VersionNum = version;
	Settings.m_Password = bPassword;
	Settings.m_UserFile = userFilePath;
	Settings.m_SystemTray = bSystemTray;
	Settings.m_Maintenance = bMaintenance;
	
	char port[50];
	_itoa(nPort,port,10);
	Settings.m_Port = port;

	char maintenanceDays[10];
	_itoa(nMaintenanceDays,maintenanceDays,10);
	Settings.m_MaintenanceDays = maintenanceDays;

	if (Settings.DoModal()==IDOK)
	{
		//Updates the Settings variables.
		if (Settings.m_Sound==1)
			bSound = true;
		else
			bSound = false;
		if (Settings.m_Log==1)
			bLog = true;
		else
			bLog = false;
		logPath = Settings.m_LogFile;
		if (Settings.m_Version==1)
			bVersionCheck = true;
		else
			bVersionCheck = false;
		version = Settings.m_VersionNum;
		if (Settings.m_Password==1)
			bPassword = true;
		else
			bPassword = false;
		userFilePath = Settings.m_UserFile;
		nPort = atoi(Settings.m_Port);
		if (Settings.m_SystemTray==1)
			bSystemTray = true;
		else
			bSystemTray = false;
		if (Settings.m_Maintenance==1)
			bMaintenance = true;
		else
			bMaintenance = false;
		nMaintenanceDays = atoi(Settings.m_MaintenanceDays);

		//Saves these settings to the registry.
		if (Registry.CreateKey(HKEY_LOCAL_MACHINE,"Software\\ServerProgram",""))
		{
			Registry.Open(HKEY_LOCAL_MACHINE,"Software\\ServerProgram");
			
			Registry.WriteDWORD("Sound",bSound);
			
			Registry.WriteDWORD("Log",bLog);
			
			char logPathBuffer[50];
			strcpy(logPathBuffer, logPath);
			Registry.WriteString("Log Path",&logPathBuffer);
			
			Registry.WriteDWORD("Version",bVersionCheck);

			char versionBuffer[50];
			strcpy(versionBuffer, version);
			Registry.WriteString("Version Number",&versionBuffer);

			Registry.WriteDWORD("Password",bPassword);
			
			char userBuffer[50];
			strcpy(userBuffer, userFilePath);
			Registry.WriteString("User File",&userBuffer);

			Registry.WriteDWORD("Port",nPort);

			Registry.WriteDWORD("System Tray",bSystemTray);

			Registry.WriteDWORD("Maintenance",bMaintenance);

			Registry.WriteDWORD("Maintenance Days",nMaintenanceDays);
		}

		//If modified, this code reinitialized the Log File.
		if (bLog && (originalLogPath != logPath))
		{
			if(log.m_pStream != NULL)
				log.Close();
			WIN32_FIND_DATA fData;
			HANDLE handle = FindFirstFile(LPCTSTR(logPath),&fData); 
			if (handle == INVALID_HANDLE_VALUE)
			{
				if (log.Open (logPath, CFile::modeCreate | CFile::modeWrite) == TRUE)
					if(log.m_pStream != NULL)
						log.Close();
			}
			log.Open (logPath, CFile::modeWrite);
		}

		//If modified, this code reinitializes the Users File.
		if (bPassword && (originalUserFilePath != userFilePath))
		{
			usersFile.WriteFile();
			usersFile.Reset();
			usersFile.SetPath(userFilePath);
			usersFile.ReadFile();
		}

		//If modified, this code reinitializes the Server.
		if (nOriginalPort != nPort)
		{
			listenSock.Close();
			StartServer();
		}
	}
}

//Called when you want to view the User Log. (While viewing it the Server will
//continue to operate, as well as the log file will continue to record users actions
//(although you will not see this until you reload the file)
void CServerProgramDlg::OnViewlog() 
{
	if(log.m_pStream != NULL)
		log.Close();
	ShellExecute( NULL, "open", logPath, NULL, NULL, SW_SHOWNORMAL);	
	Sleep(1000);
	log.Open (logPath,CFile::modeWrite);
}

//Called when you want to edit the Users File.
void CServerProgramDlg::OnViewusers() 
{
	usersFile.WriteFile();
	ShellExecute( NULL, "open", userFilePath, NULL, NULL, SW_SHOWNORMAL);	
	AfxMessageBox("Press OK once you are done editing the users file.  After you press OK, the edited changes will take effect.");
	usersFile.ReadFile();
}

//Called when you Shut Down the Server.
void CServerProgramDlg::OnExitServer() 
{
	int Disconnect=MessageBox("Exiting Will Terminate all Users! Are You Sure You Want to Exit the Server?","Shut Down Server?",MB_YESNO|MB_ICONQUESTION);
	if (Disconnect==IDYES)
	{
		if (bLog)
		{
			GetLocalTime(&st);
			GetTimeFormat(LOCALE_USER_DEFAULT,DATE_LONGDATE,&st,NULL,szTime,80);
			GetDateFormat(LOCALE_USER_DEFAULT, DATE_LONGDATE, &st, NULL, szDate, 80);
			log.SeekToEnd();
			log.WriteString("Server Exited on "+CString(szDate)+" at "+CString(szTime)+"\n");
		}
		OnOK();
	}
}

void CServerProgramDlg::OnTimer(UINT nIDEvent) 
{
	if (nIDEvent==1) //Daily Maintenance - Delete Old Users
	{
		//Run through each individual user in the Users File
		for (int a=usersFile.names.GetSize()-1; a>=0 ;a--)
		{
			int LastTimeOnline = usersFile.GetValueI(usersFile.names[a],"Days Since Last Time Online");
			if (bMaintenance && LastTimeOnline > nMaintenanceDays)
				usersFile.DeleteKey(usersFile.names[a]); //Deletes the Old User
			else
			{
				LastTimeOnline++;
				usersFile.SetValueI(usersFile.names[a],"Days Since Last Time Online",LastTimeOnline); //Increments all other user one day older
			}
		}
		usersFile.WriteFile(); //Saves the changes
	}

	CDialog::OnTimer(nIDEvent);
}

void CServerProgramDlg::OnClose() 
{
	OnExitServer();
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日产国产欧美视频一区精品| 国产麻豆一精品一av一免费| 日韩高清不卡在线| 成人免费av网站| 国产高清久久久久| 国产资源在线一区| 国产偷国产偷亚洲高清人白洁| 极品少妇xxxx精品少妇偷拍| 99久久精品国产一区| 色噜噜夜夜夜综合网| 久久免费视频一区| 日本午夜精品一区二区三区电影 | 亚洲国产成人av网| 国产成人一区二区精品非洲| 欧美一区二区性放荡片| 亚洲精品国产一区二区三区四区在线| 国产一区二区视频在线| 欧美日韩不卡在线| 亚洲一区二区偷拍精品| 99这里只有精品| 综合电影一区二区三区| 国产一区视频网站| 欧美va亚洲va国产综合| 日韩电影网1区2区| 7777精品伊人久久久大香线蕉的| 一区二区三区欧美| 色噜噜狠狠色综合欧洲selulu| 国产精品九色蝌蚪自拍| 成人在线视频首页| 国产精品国产三级国产a| 国产成人午夜高潮毛片| 久久精品欧美一区二区三区不卡 | 99亚偷拍自图区亚洲| 久久久久九九视频| 国产精品一线二线三线精华| 久久综合九色综合97婷婷| 国产一区二区三区四区在线观看| 欧美电影免费提供在线观看| 秋霞影院一区二区| 欧美xingq一区二区| 国内一区二区视频| 中文幕一区二区三区久久蜜桃| 国产91在线观看| 中文字幕综合网| 在线观看精品一区| 日韩中文字幕一区二区三区| 日韩午夜激情免费电影| 国产精品一区二区三区四区| 欧美国产欧美亚州国产日韩mv天天看完整| 国产91高潮流白浆在线麻豆| 亚洲欧洲精品一区二区三区不卡| 91成人看片片| 免费成人在线观看| 国产肉丝袜一区二区| av男人天堂一区| 婷婷中文字幕综合| 精品成人在线观看| 91麻豆国产自产在线观看| 亚洲国产欧美一区二区三区丁香婷| 欧美一区在线视频| 国产成人福利片| 亚洲国产综合色| 久久久久久久综合| 欧美在线免费播放| 韩国成人福利片在线播放| 最好看的中文字幕久久| 欧美精品亚洲二区| 成熟亚洲日本毛茸茸凸凹| 亚洲成人午夜电影| 久久久精品一品道一区| 欧美中文字幕一区| 国产一区二区精品久久99| 一区二区高清免费观看影视大全| 日韩午夜在线影院| 色婷婷精品久久二区二区蜜臀av| 青娱乐精品在线视频| 中文字幕在线观看一区| 欧美一区2区视频在线观看| 成人va在线观看| 琪琪久久久久日韩精品| 亚洲女人****多毛耸耸8| 精品国产一区二区在线观看| 欧美偷拍一区二区| 国产成人av电影在线| 青椒成人免费视频| 亚洲大尺度视频在线观看| 国产日韩欧美a| 欧美一区二区国产| 欧美三级中文字幕在线观看| 成人爱爱电影网址| 国产一区999| 视频一区二区三区在线| 亚洲精品免费电影| 国产精品另类一区| 久久久久88色偷偷免费 | 91免费版在线| 国产美女av一区二区三区| 日日夜夜精品视频天天综合网| 中文字幕色av一区二区三区| 国产校园另类小说区| 日韩精品一区二区三区视频在线观看| 欧美三级乱人伦电影| 色欧美片视频在线观看| 91在线观看高清| 成a人片亚洲日本久久| 国产精品自在在线| 国产尤物一区二区| 精品一区二区三区欧美| 老司机精品视频一区二区三区| 亚洲第一福利视频在线| 亚洲高清不卡在线| 亚洲成人一区二区在线观看| 一区二区三区四区在线免费观看 | 91麻豆精品国产91久久久资源速度| 99久久伊人网影院| av在线一区二区三区| www.亚洲国产| 97精品国产露脸对白| www.激情成人| 色噜噜狠狠成人网p站| 91国产免费观看| 欧美亚洲动漫制服丝袜| 欧美日韩一区二区三区在线看| 欧美日韩一区在线| 91精品国产一区二区三区香蕉| 制服丝袜一区二区三区| 日韩三级伦理片妻子的秘密按摩| 欧美xxxx在线观看| 久久久久久久精| 国产精品天天摸av网| 亚洲精选视频免费看| 视频在线观看一区| 五月综合激情网| 26uuu色噜噜精品一区二区| 无码av免费一区二区三区试看 | 亚洲综合一区在线| 亚洲丰满少妇videoshd| 免费久久精品视频| 国产精一区二区三区| 99久久精品免费看国产| 欧美在线啊v一区| 日韩欧美中文一区二区| 国产亚洲成av人在线观看导航| 综合欧美一区二区三区| 午夜电影网一区| 国产美女久久久久| 91色porny蝌蚪| 欧美一级高清大全免费观看| 久久这里只有精品6| 1区2区3区精品视频| 天天做天天摸天天爽国产一区| 国产在线观看免费一区| 91传媒视频在线播放| 欧美剧情电影在线观看完整版免费励志电影 | 风间由美一区二区三区在线观看| 国产成人av影院| 精品污污网站免费看| 久久久噜噜噜久久中文字幕色伊伊| 中文字幕中文字幕在线一区| 日韩av在线发布| 欧美三级电影在线看| 2023国产精华国产精品| 1024成人网| 精品一区二区三区的国产在线播放| av在线一区二区三区| 精品国产伦一区二区三区观看方式 | 国内精品久久久久影院薰衣草| 99这里都是精品| 精品乱码亚洲一区二区不卡| 依依成人精品视频| 国产精品资源网站| 8v天堂国产在线一区二区| 国产精品美女久久久久久久久久久 | 99久久久精品| 欧美大片免费久久精品三p| 伊人婷婷欧美激情| 成人自拍视频在线观看| 日韩免费高清视频| 午夜精品免费在线观看| 色综合久久久网| 欧美激情在线观看视频免费| 青青草97国产精品免费观看无弹窗版| 91一区二区在线| 国产喷白浆一区二区三区| 美女脱光内衣内裤视频久久网站| 色综合久久久久久久| 中文字幕成人网| 国产精一区二区三区| 精品国产污网站| 久久9热精品视频| 日韩一级片在线观看| 亚洲成人黄色影院| 欧洲色大大久久| 亚洲美女视频在线| 一本大道久久精品懂色aⅴ| 中文成人av在线| 99这里都是精品| 亚洲欧洲日韩一区二区三区| 高清不卡一二三区| 欧美在线啊v一区|