云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 计算机网络实验实验报告

计算机网络实验实验报告

  • 62 次阅读
  • 3 次下载
  • 2025/6/2 14:20:41

// }

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;

搜索更多关于: 计算机网络实验实验报告 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

// } 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)_begint

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com