資源簡介
c++源代碼 加 “使用說明.word”文檔 能運行

代碼片段和文件信息
#include?“stdafx.h“
#include?“HttpProtocol.h“
//?格林威治時間的星期轉換
char?*week[]?=?{
“Sun“??
“Mon“
“Tue“
“Wed“
“Thu“
“Fri“
“Sat“
};
?
//?格林威治時間的月份轉換
char?*month[]?=?
{
“Jan“??
“Feb“
“Mar“
“Apr“
“May“
“Jun“
“Jul“
“Aug“
“Sep“
“Oct“
“Nov“
“Dec“
};
UINT?CHttpProtocol::ClientNum?=?0;
CCriticalSection?CHttpProtocol::m_critSect; //?排斥區初始化
HANDLE CHttpProtocol::None?=?NULL;
CHttpProtocol::CHttpProtocol(void)
{
m_pListenThread?=?NULL;
m_hwndDlg?=?NULL;
}
CHttpProtocol::~CHttpProtocol(void)
{
}
bool?CHttpProtocol::StartHttpSrv()
{
WORD?wVersionRequested?=?WINSOCK_VERSION;
WSADATA?wsaData;
int?nRet;
//?啟動Winsock
nRet?=?WSAStartup(wVersionRequested?&wsaData); //?加載成功返回0
if?(nRet)
{???
//?錯誤處理
AfxMessageBox(“Initialize?WinSock?Failed“);
return?false;
}
//?檢測版本
if?(wsaData.wVersion?!=?wVersionRequested)
{????
//?錯誤處理???
AfxMessageBox(“Wrong?WinSock?Version“);
return?false;
}
m_hExit?=?CreateEvent(NULL?TRUE?FALSE?NULL);
if?(m_hExit?==?NULL)
{
return?false;
}
//創建套接字
m_listenSocket?=?WSASocket(AF_INET?SOCK_STREAM?IPPROTO_TCP?NULL?0?WSA_FLAG_OVERLAPPED);
if?(m_listenSocket?==?INVALID_SOCKET)
{
//?異常處理
CString?*pStr?=?new?CString;
*pStr?=?“Could?not?create?listen?socket“;
SendMessage(m_hwndDlg?LOG_MSG?(UINT)pStr?NULL);
return?false;
}
SOCKADDR_IN?sockAddr;
LPSERVENT lpServEnt;
if?(m_nPort?!=?0)
{
//?從主機字節順序轉為網絡字節順序賦給sin_port
sockAddr.sin_port?=?htons(m_nPort);
}
else
{
//?獲取已知http服務的端口,該服務在tcp協議下注冊
lpServEnt?=?getservbyname(“http“?“tcp“);
if?(lpServEnt?!=?NULL)
{
sockAddr.sin_port?=?lpServEnt->s_port;
}
else
{
sockAddr.sin_port?=?htons(HTTPPORT); //?默認端口HTTPPORT=80
}
}
sockAddr.sin_family?=?AF_INET;
sockAddr.sin_addr.s_addr?=?INADDR_ANY;??//?指定端口號上面的默認IP接口?
//?初始化content-type和文件后綴對應關系的map
????CreateTypeMap();
//?套接字綁定
nRet?=?bind(m_listenSocket?(LPSOCKADDR)&sockAddr?sizeof(struct?sockaddr));
if?(nRet?==?SOCKET_ERROR)
{??
//?綁定發生錯誤
CString?*pStr?=?new?CString;
*pStr?=?“bind()?error“;
SendMessage(m_hwndDlg?LOG_MSG?(UINT)pStr?NULL);
closesocket(m_listenSocket); //?斷開鏈接
return?false;
}
????//?套接字監聽。為客戶連接創建等待隊列隊列最大長度SOMAXCONN在windows?sockets頭文件中定義
nRet?=?listen(m_listenSocket?SOMAXCONN);
if?(nRet?==?SOCKET_ERROR)
{???
//?異常處理
CString?*pStr?=?new?CString;
*pStr?=?“listen()?error“;
SendMessage(m_hwndDlg?LOG_MSG?(UINT)pStr?NULL);
closesocket(m_listenSocket); //?斷開鏈接
return?false;
}
//?創建listening進程,接受客戶機連接要求
m_pListenThread?=?AfxBeginThread(ListenThread?this);
if?(!m_pListenThread)
{
//?線程創建失敗
CString?*pStr?=?new?CString;
*pStr?=?“Could?not?create?listening?thread“?;
SendMessage(m_hwndDlg?LOG_MSG?(UINT)pStr?NULL);
closesocket(m_listenSocket); //?斷開鏈接
return?false;
}
CString?strIP?strTemp;
char?hostna
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件???????1522??2009-03-05?19:52??HttpServer\Code\bmp26567.bmp
?????文件????????198??2009-03-05?19:52??HttpServer\Code\bmp30994.bmp
?????文件????????378??2009-03-05?19:52??HttpServer\Code\bmp30995.bmp
?????文件????????338??2009-03-05?19:52??HttpServer\Code\bmp30996.bmp
?????文件????????518??2009-03-05?19:52??HttpServer\Code\cur30977.cur
?????文件??????16248??2010-04-20?18:43??HttpServer\Code\Debug\BuildLog.htm
?????文件?????501952??2010-04-20?18:43??HttpServer\Code\Debug\HttpProtocol.obj
?????文件?????387508??2010-04-20?18:43??HttpServer\Code\Debug\HttpProtocol.sbr
?????文件????1559552??2010-04-20?18:43??HttpServer\Code\Debug\HttpServer.bsc
?????文件????2171010??2009-04-12?10:04??HttpServer\Code\Debug\HttpServer.exe
?????文件???????2048??2010-04-20?18:43??HttpServer\Code\Debug\HttpServer.exe.em
?????文件????2599604??2009-04-12?10:04??HttpServer\Code\Debug\HttpServer.ilk
?????文件??????61138??2010-04-20?18:43??HttpServer\Code\Debug\HttpServer.obj
?????文件???16187392??2010-04-20?18:43??HttpServer\Code\Debug\HttpServer.pch
?????文件??????12436??2009-04-12?10:04??HttpServer\Code\Debug\HttpServer.res
?????文件?????347274??2010-04-20?18:43??HttpServer\Code\Debug\HttpServer.sbr
?????文件?????300497??2010-04-20?18:43??HttpServer\Code\Debug\HttpServerDlg.sbr
?????文件?????333914??2010-04-20?18:43??HttpServer\Code\Debug\StdAfx.obj
?????文件????2789024??2010-04-20?18:43??HttpServer\Code\Debug\StdAfx.sbr
?????文件?????295936??2009-04-13?18:41??HttpServer\Code\Debug\vc60.idb
?????文件?????585728??2009-04-12?10:04??HttpServer\Code\Debug\vc60.pdb
?????文件?????863232??2010-04-20?18:43??HttpServer\Code\Debug\vc80.idb
?????文件?????831488??2010-04-20?18:43??HttpServer\Code\Debug\vc80.pdb
?????文件??????19615??2007-06-14?20:59??HttpServer\Code\HttpProtocol.cpp
?????文件???????3186??2007-06-14?20:39??HttpServer\Code\HttpProtocol.h
?????文件??????32024??2009-04-11?10:32??HttpServer\Code\HttpServer.aps
?????文件???????2885??2009-04-13?19:29??HttpServer\Code\HttpServer.clw
?????文件???????2119??2007-04-07?08:32??HttpServer\Code\HttpServer.cpp
?????文件???????5025??2009-04-12?10:15??HttpServer\Code\HttpServer.dsp
?????文件????????545??2007-04-07?08:32??HttpServer\Code\HttpServer.dsw
............此處省略36個文件信息
評論
共有 條評論