第一范文网 - 专业文章范例文档资料分享平台

计算机网络实验实验报告

来源:用户分享 时间:2025/6/28 5:44:43 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

// }

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文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c233682sqie0fvam2h1p8_4.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top