计算机网络实验实验报告

2026/1/27 14:22:46

// }

return TRUE;

return Run(Port, PersTO); bRun = TRUE;

CloseHandle(ThreadLaunchedEvent);

if(WaitForSingleObject(ThreadLaunchedEvent, THREADWAIT_TO) != WAIT_OBJECT_0) { }

//LogMessage(LOGFILENAME, \CloseHandle(ThreadLaunchedEvent); return FALSE; // 启动接收线程

ResetEvent(ThreadLaunchedEvent);

ThreadA = (HANDLE)_beginthreadex(NULL, 0, AcceptThread, this, 0, &ThreadA_ID); if(!ThreadA) { }

//LogMessage(LOGFILENAME, \return FALSE;

errno);

specified Timeout ->\

2. 关闭服务:

BOOL QHttpServer::Shutdown()

{

if(!bRun)

return FALSE;

BOOL bResult = TRUE; HANDLE hArray[2]; hArray[0] = ThreadA; hArray[1] = ThreadC; //

// 关闭接收和helper线程 //

SetEvent(ShutdownEvent);

DWORD n = WaitForMultipleObjects(2, hArray, TRUE, THREADKILL_TO);

}

if(n == WAIT_TIMEOUT || n == WAIT_FAILED) { }

CloseHandle(ThreadA); CloseHandle(ThreadC); //

// 所有的客户线程都结束 //

THREADLIST::iterator it; while(ThreadList.size()) { }

DeleteCriticalSection(&cs); DeleteCriticalSection(&_cs); bRun = FALSE; return bResult;

Sleep(100);

//LogMessage(LOGFILENAME, \ //if(!TerminateThread(ThreadA, THREADEXIT_SUCCESS))

//LogMessage(LOGFILENAME, \

already terminated\

//if(!TerminateThread(ThreadC, THREADEXIT_SUCCESS))

//LogMessage(LOGFILENAME, \

already terminated\

bResult = FALSE;

3. 增加新链接:

BOOL QHttpServer::AddClient(SOCKET s, char* clientAddress, int port)

{

VISVECTOR::iterator it;

it = find(Visitors.begin(), Visitors.end(), clientAddress);//查找重复IP if(it == Visitors.end()) { }

Visitors.push_back(clientAddress);//增加新客户IP visitsip.push_back(clientAddress);

//输出用

}

InterlockedIncrement(&Stats.nTotalHits);//互斥 ThreadTag threadTag; HANDLE unsigned int

//进入临界区并创建连接对象 EnterCriticalSection(&cs);

NewConnectionTag *NewConn = new NewConnectionTag; NewConn->pHttpServer NewConn->s if(hThread) { } else

serverlog.push_back(\);

//LogMessage(LOGFILENAME, \ //else

LeaveCriticalSection(&cs); return TRUE;

threadTag.threadID = threadID; threadTag.hThread = hThread; ThreadList.push_back(threadTag);

= this;

= s;

hThread; threadID;

hThread = (HANDLE)_beginthreadex(NULL, 0, ClientThread, NewConn, 0, &threadID);

4. 分析请求数据:

BOOL QHttpServer::ParseRequest(string szRequest, string &szResponse, BOOL &bKeepAlive)

{

string szMethod; string szFileName; string szFileExt;

string szStatusCode(\); string szContentType(\); string szConnectionType(\); string szNotFoundMessage; string szDateTime;

char pResponseHeader[2048]; fpos_t lengthActual = 0, length = 0; char *pBuf = NULL; int n; //

// 检查提交方法 //

n = szRequest.find(\, 0); if(n != string::npos) { } else { } //

// 分析链接类型 //

n = szRequest.find(\, 0); if(n != string::npos) //

// 分析内容类型 //

bKeepAlive = TRUE; return FALSE;

szMethod = szRequest.substr(0, n); if(szMethod == \) { } else { }

szStatusCode = \; szFileName = ERROR501; //

// 获取文件名 //

int n1 = szRequest.find(\, n + 1); if(n != string::npos) { } else { }

return FALSE;

szFileName = szRequest.substr(n + 1, n1 - n - 1); if(szFileName == \) { }

szFileName = m_DefIndex;


计算机网络实验实验报告.doc 将本文的Word文档下载到电脑
搜索更多关于: 计算机网络实验实验报告 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219