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

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

?? httpui.c

?? 網絡通信相關協議 代碼簡單易懂 便于學習
?? C
字號:
//
// HTTPUI.C		Hyper Text Transfer Protocol Server 
//
//				User Interface Module
//
//				Multi-Threaded Model
//				One thread handles the user interface
//				Another handles incoming connections
//				Other threads are created to handle
//				simultaneous connections
//

//
// Application/User Interface include
//
#include "httpui.h"

//
// Message for HTTPSERV informational notifications
//
#define UM_HTTP	 WM_USER+2


char gszAppName[]  = {"HTTPSRVM"};
char gszPortKey[]  = {"PORT"};
char gszDirKey[]   = {"ROOTDIR"};


////////////////////////////////////////////////////////////

int WINAPI WinMain(HINSTANCE hInstance, 
				   HINSTANCE hPrevInstance,
				   LPSTR lpCmdLine,
				   int nCmdShow)
{
	WORD wVersionRequested = WINSOCK_VERSION;
	WSADATA wsaData;
	int nRet;

	//
	// Initialize WinSock
	//
	nRet = WSAStartup(wVersionRequested, &wsaData);
	if (nRet)
	{
		MessageBox(NULL, 
				   "Initialize WinSock Failed",
				   gszAppName, 
				   MB_OK);
		return 1;
	}
	// Check version
	if (wsaData.wVersion != wVersionRequested)
	{       
		MessageBox(NULL, 
				   "Wrong WinSock Version",
				   gszAppName, 
				   MB_OK);
		return 2;
	}

	//
	// Use new common controls
	//
	InitCommonControls();

	//
	// Use a dialog as a main window
	//
	DialogBox(hInstance,
			  MAKEINTRESOURCE(IDD_MAINWND),
			  NULL, 
			  MainWndProc);

	//
	// Release WinSock
	//
	WSACleanup();
	return(0);
}

////////////////////////////////////////////////////////////

BOOL CALLBACK MainWndProc(HWND hwnd, 
						  UINT uMsg,
						  WPARAM wParam, 
						  LPARAM lParam) 
{
	switch (uMsg) 
	{
		HANDLE_DLG_MSG(hwnd, WM_INITDIALOG, OnInitDialog);
		HANDLE_DLG_MSG(hwnd, WM_COMMAND,	OnCommand);

		//
		// Handle messages from HTTPMT.C
		//
		case UM_HTTP:
			switch(wParam)
			{
				case HTTP_FILEOK_MSG:
					FileRequested(hwnd, 0, (LPCSTR)lParam);
					break;
				case HTTP_FILENOTFOUND_MSG:
					FileRequested(hwnd, 404, (LPCSTR)lParam);
					break;
				case HTTP_STATS_MSG:
					Statistics(hwnd, (LPHTTPSTATS)lParam);
					break;
				case HTTP_EVENT_MSG:
					ShowEvent(hwnd, (LPCSTR)lParam);
					break;
			}
			return TRUE;
	}
	return FALSE;
}

////////////////////////////////////////////////////////////

BOOL OnInitDialog(HWND hwnd, HWND hwndFocus, LPARAM lParam) 
{
	LV_COLUMN col;
	HWND hwndList;
	TEXTMETRIC tm;

	//
	// Associate an icon with the dialog box.
	//
	SetClassLong(hwnd, 
				 GCL_HICON, 
				 (LONG)LoadIcon(GetWindowInstance(hwnd),
				 MAKEINTRESOURCE(IDI_APP)));

	//
	// Setup List Control
	//
	hwndList = GetDlgItem(hwnd, IDC_LIST);
	GetTextMetrics(GetDC(hwnd), &tm);

	col.mask    = LVCF_FMT|LVCF_TEXT|LVCF_WIDTH;
	col.fmt     = LVCFMT_LEFT;
	col.pszText = "File";
	col.cx      = tm.tmAveCharWidth*50;
	ListView_InsertColumn(hwndList, 0, &col);

	col.fmt     = LVCFMT_RIGHT;
	col.pszText = "Hits";
	col.cx      = tm.tmAveCharWidth*5;
	ListView_InsertColumn(hwndList, 1, &col);

   return(TRUE);
}

////////////////////////////////////////////////////////////

void OnCommand(HWND hwnd, int nId, HWND hwndCtl, UINT codeNotify) 
{
	static BOOL  fStarted = FALSE;
	HWND		 hwndButton;
	HTTPSERVINFO si;
	char		 szRootDir[_MAX_PATH];
	int          nRet;

	switch (nId) 
	{
		//
		// Start/Stop HTTP Server
		//
		case IDC_START_STOP:
			hwndButton = GetDlgItem(hwnd, IDC_START_STOP);

			if (!fStarted)
			{
				//
				// Get user preferences
				//
				nRet = DialogBox(GetWindowInstance(hwnd),
						  MAKEINTRESOURCE(IDD_SERVINFO),
						  hwnd, 
						  InfoWndProc);
				if (nRet == IDOK)
				{
					// Fill in the server info
					si.nPort = GetProfileInt(gszAppName,
									 gszPortKey,
									 0);
					GetProfileString(gszAppName,
							 gszDirKey,
							 "",
							 szRootDir,
							 sizeof(szRootDir));
					si.lpRootDir = szRootDir;
					si.hwnd      = hwnd;
					si.uMsgApp   = UM_HTTP;
					if (StartHTTP(&si))
					{
						SetWindowText(hwndButton, "&Stop");
						fStarted = TRUE;
					}
				}
			}
			else
			{
				StopHTTP();
				SetWindowText(hwndButton, "&Start");
				fStarted = FALSE;
			}
			break;

		case IDCANCEL:
			//
			// If HTTP is running, stop it
			//
			if (fStarted)
				StopHTTP();
			fStarted = FALSE;
			EndDialog(hwnd, 0);
			break;
   }
}

////////////////////////////////////////////////////////////

void FileRequested(HWND hwnd, int nError, LPCSTR lpFileName)
{
	char szBuf[256];
	char szDisplayName[_MAX_PATH+10];
	DWORD dwHitCount;
	HWND hwndList = GetDlgItem(hwnd, IDC_LIST);
	LV_FINDINFO fi;
	LV_ITEM		lvItem;
	int nItem;

	//
	// Was the file found?
	//
	if (!nError)
		strcpy(szDisplayName, lpFileName);
	else
		wsprintf(szDisplayName,
				 "%d - %s",
				 nError,
				 lpFileName);

	//
	// See if the item is already in the list
	//
	fi.flags = LVFI_STRING;
	fi.psz   = szDisplayName;
	nItem = ListView_FindItem(hwndList, -1, &fi);

	//
	// If it is, increment the hit count
	//
	if (nItem != -1)
	{
		lvItem.mask = LVIF_TEXT;
		lvItem.iItem = nItem;
		lvItem.iSubItem = 1;
		lvItem.pszText = szBuf;
		lvItem.cchTextMax = sizeof(szBuf);
		if (ListView_GetItem(hwndList, &lvItem))
		{
			dwHitCount = atol(szBuf);
			dwHitCount++;
			wsprintf(szBuf, "%ld", dwHitCount);
			ListView_SetItem(hwndList, &lvItem);
			return;
		}
	}

	//
	// Add a new item to the list
	//
	lvItem.mask = LVIF_TEXT;
	lvItem.iItem = 0;
	lvItem.iSubItem = 0;
	lvItem.pszText = szDisplayName;
	nItem = ListView_InsertItem(hwndList, &lvItem);
	lvItem.iItem = nItem;
	lvItem.iSubItem = 1;
	lvItem.pszText = "1";
	ListView_SetItem(hwndList, &lvItem);
}

////////////////////////////////////////////////////////////

void Statistics(HWND hwnd, LPHTTPSTATS lpStats)
{
	static DWORD dwTransferred = 0L;
	static DWORD dwConnections = 0L;
	static DWORD dwReceived    = 0L;
	static DWORD dwRate        = 0L;
	DWORD dwX;
	char szBuf[sizeof("4294967295 ")];

	#define UPDATENUMBER(n, id)	\
		wsprintf(szBuf,"%ld", n); \
		SetDlgItemText(hwnd, id, szBuf);

	dwConnections++;
	UPDATENUMBER(dwConnections, IDC_CONNECTIONS);

	//
	// Convert elapsed time to seconds
	//
	dwX = lpStats->dwElapsedTime/1000L; 
	if (dwX > 1)
		dwX = (lpStats->dwSend+lpStats->dwRecv) / dwX;
	else
		dwX = (lpStats->dwSend+lpStats->dwRecv);
	if (dwRate > 0)
		dwRate = (dwRate+dwX)/2;
	else
		dwRate = dwX;

	UPDATENUMBER(dwRate, IDC_RATE);
	dwReceived += lpStats->dwRecv;
	UPDATENUMBER(dwReceived, IDC_RECEIVED);
	dwTransferred += lpStats->dwSend;
	UPDATENUMBER(dwTransferred, IDC_TRANSFERRED);
}

////////////////////////////////////////////////////////////

void ShowEvent(HWND hwnd, LPCSTR lpEvent)
{
	char szBuf[284];
	SYSTEMTIME st;
	HWND hwndEvents = GetDlgItem(hwnd, IDC_EVENTLOG);

	GetLocalTime(&st);
	wsprintf(szBuf,"%02d:%02d:%02d.%03d\t%s",
			st.wHour,   st.wMinute,
			st.wSecond, st.wMilliseconds,
			lpEvent);
	ListBox_AddString(hwndEvents, szBuf);
	if (ListBox_GetCount(hwndEvents) > 500)
		ListBox_DeleteString(hwndEvents, 0);
}

////////////////////////////////////////////////////////////

BOOL CALLBACK InfoWndProc(HWND hwnd, 
						  UINT uMsg,
						  WPARAM wParam, 
						  LPARAM lParam) 
{
	char szText[256];
	BOOL fRet = 0;
	switch (uMsg) 
	{
		case WM_INITDIALOG:
			//
			// Fill the controls with previous entries
			//
			GetProfileString(gszAppName,
							 gszPortKey,
							 "",
							 szText,
							 sizeof(szText));
			SetDlgItemText(hwnd,
						   IDC_PORT,
						   szText);
									   
			GetProfileString(gszAppName,
							 gszDirKey,
							 "",
							 szText,
							 sizeof(szText));
			SetDlgItemText(hwnd,
						   IDC_ROOTDIR,
						   szText);
			fRet = TRUE;
		case WM_COMMAND:
			switch(wParam)
			{
				case IDOK:
					//
					// Save the preferences
					//
					GetDlgItemText(hwnd,
								   IDC_PORT,
								   szText,
								   sizeof(szText));
					WriteProfileString(gszAppName,
									   gszPortKey,
									   szText);
									   
					GetDlgItemText(hwnd,
								   IDC_ROOTDIR,
								   szText,
								   sizeof(szText));
					WriteProfileString(gszAppName,
									   gszDirKey,
									   szText);
					fRet = TRUE;
					EndDialog(hwnd, IDOK);
					break;
				case IDCANCEL:
					fRet = TRUE;
					EndDialog(hwnd, IDCANCEL);
					break;
			}
			break;
	}
	return fRet;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
中文字幕日韩av资源站| 国产精品自拍三区| 美国十次了思思久久精品导航| 国产一区福利在线| 欧美日韩综合不卡| 国产精品丝袜在线| 久久精品国产精品青草| 在线观看中文字幕不卡| 国产人久久人人人人爽| 日韩极品在线观看| 欧美性大战xxxxx久久久| 中文一区在线播放| 国产米奇在线777精品观看| 亚洲欧美日韩久久| 久久福利资源站| 欧美福利一区二区| 一区二区三区在线视频免费观看 | 国产精一区二区三区| 欧美日韩情趣电影| 一区二区在线观看免费 | 精品久久一区二区三区| 天天做天天摸天天爽国产一区| 成人av午夜影院| 国产色一区二区| 狠狠色狠狠色综合日日91app| 91精品在线观看入口| 亚洲国产精品久久久男人的天堂| 色噜噜狠狠成人网p站| 中文字幕精品一区二区三区精品| 国产一级精品在线| 国产日韩欧美精品一区| 国产精品一二二区| 国产农村妇女精品| 国产99精品国产| 亚洲国产精品成人综合| 成人一区在线观看| 自拍偷拍国产精品| 色综合天天综合网天天看片| 中文字幕亚洲精品在线观看| 91在线视频播放| 一区二区三区在线免费视频| 在线观看国产日韩| 日韩在线一区二区三区| 欧美大片拔萝卜| 国产一区二区在线观看免费| 久久久精品国产免大香伊| 国产成人av资源| 午夜精品久久久久久久久久| 欧美综合欧美视频| 日韩电影免费一区| 精品福利在线导航| 成人在线综合网| 一区二区三区精品在线观看| 欧美日韩国产bt| 精品一二三四在线| 亚洲视频在线一区观看| 欧美浪妇xxxx高跟鞋交| 美女国产一区二区| 国产精品久久久久久久久免费樱桃 | 色婷婷综合激情| 日韩国产一二三区| 久久精品人人做| 色悠悠久久综合| 麻豆精品一区二区综合av| 中日韩av电影| 6080亚洲精品一区二区| 高清国产一区二区| 性做久久久久久免费观看| 26uuu精品一区二区| www.66久久| 人禽交欧美网站| 亚洲国产高清在线| 欧美精品一级二级三级| 成人久久视频在线观看| 婷婷久久综合九色国产成人| 国产农村妇女毛片精品久久麻豆| 欧美色网站导航| 成人精品免费网站| 久久爱www久久做| 亚洲综合精品久久| 久久久99精品免费观看不卡| 欧美日韩亚洲综合| av一区二区久久| 激情丁香综合五月| 国产宾馆实践打屁股91| 亚洲6080在线| 亚洲女性喷水在线观看一区| 欧美精品一区二区久久婷婷| 欧美图片一区二区三区| 丁香婷婷综合激情五月色| 日韩在线一区二区| 亚洲男人的天堂一区二区| 亚洲精品在线三区| 91精品国模一区二区三区| 一本色道久久加勒比精品 | 欧美精品在欧美一区二区少妇| 成人国产精品免费网站| 狠狠网亚洲精品| 三级在线观看一区二区 | 亚洲成人免费观看| 中文字幕五月欧美| 欧美大黄免费观看| 日韩一级黄色大片| 制服视频三区第一页精品| 欧美性欧美巨大黑白大战| kk眼镜猥琐国模调教系列一区二区| 国内成人精品2018免费看| 青娱乐精品在线视频| 午夜精品久久久久影视| 午夜免费久久看| 亚洲一区二区三区小说| 一区二区三区色| 亚洲乱码国产乱码精品精小说| 亚洲国产精品黑人久久久| 337p日本欧洲亚洲大胆色噜噜| 欧美大片在线观看一区二区| 日韩一区国产二区欧美三区| 欧美一区二区三区视频免费播放 | 亚洲免费观看高清完整版在线观看| 国产欧美日韩精品一区| 国产清纯白嫩初高生在线观看91| 久久久亚洲午夜电影| 国产午夜三级一区二区三| 2020国产精品自拍| 欧美极品美女视频| 一区在线观看免费| 一区二区三区视频在线观看| 亚洲综合av网| 日本视频中文字幕一区二区三区| 麻豆传媒一区二区三区| 久久99精品国产.久久久久久| 国产专区欧美精品| www.日韩精品| 在线观看免费亚洲| 欧美一区二区精美| 久久久精品黄色| 亚洲欧美另类小说| 婷婷六月综合网| 国产精品中文欧美| 91丝袜国产在线播放| 欧美日韩国产影片| 久久看人人爽人人| 亚洲欧美日韩电影| 奇米精品一区二区三区四区| 欧美日韩亚洲综合在线 欧美亚洲特黄一级 | 亚洲欧洲美洲综合色网| 亚洲一区二区三区四区五区中文| 奇米888四色在线精品| 粉嫩av亚洲一区二区图片| 欧美三级中文字幕| 久久久久久久久久电影| 一区二区三区在线观看欧美| 日韩精品成人一区二区三区| 丁香桃色午夜亚洲一区二区三区 | 国产高清不卡一区| 在线观看www91| 亚洲精品一区二区三区在线观看 | 99久久精品情趣| 日韩一级视频免费观看在线| 欧美国产日韩一二三区| 亚洲成年人影院| 成人激情免费网站| 欧美精品一二三| 1024亚洲合集| 国产一区二区在线视频| 欧美日韩精品二区第二页| 国产精品少妇自拍| 免费看欧美女人艹b| 色8久久人人97超碰香蕉987| 国产日本欧美一区二区| 美国精品在线观看| 日本电影亚洲天堂一区| 国产日韩综合av| 美日韩一区二区三区| 在线免费观看一区| 中文字幕一区二区三区四区| 精品一区二区三区免费| 91精品国产综合久久久蜜臀粉嫩| 亚洲美女免费在线| www.日韩av| 国产精品人成在线观看免费 | 欧美日韩在线一区二区| 国产精品乱码一区二三区小蝌蚪| 免费成人你懂的| 欧美精品粉嫩高潮一区二区| 亚洲日本韩国一区| 91在线国产观看| 中文字幕一区二区不卡| 国产成人夜色高潮福利影视| 精品少妇一区二区三区视频免付费 | eeuss影院一区二区三区| 久久亚洲综合色| 国产一区二区三区国产| 日韩视频免费观看高清在线视频| 五月综合激情网| 在线不卡的av| 免费观看在线综合色| 欧美一区二区三区啪啪| 视频在线在亚洲| 日韩一区二区电影网|