资源简介
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个文件信息
相关资源
- 网络编程\\编程实现收发电子邮件
- 基于TCP、IP的网络编程
- C++绘制曲线图 温度计图
- 基于TCP的网络聊天室的设计一步一步
- C++基于UDP的控制台局域网聊天程序
- C++网络编程文件之第十一章 防火墙的
- Socket网络编程控制台+MFC TCP
- tcp网络编程
- C++网络编程文件之第七章 网络层协议
- MFC实现UDP网络编程
- C++ BOOST::Asio库网络编程源代码
- 网络编程-----抓包程序C语言版
- Boost ASIO C++ 网络编程 中文版
- c++P2P网络编程代码
- 小世界网络编程VC++
- ICMP扫描器设计
- C++写的即时通讯软件
- c++(socket)音频传输
- C++高级网络编程经典的C++网络编程书
- 网络编程简单聊天室
- 网络编程C++ MFC获取MAC地址
- Visual C++网络编程郑阿奇源代码+PPT
- C++网络编程ACE 卷一、卷二PDF电子版
- c++网络编程
- 《VC++网络编程开发与实战光盘》案例
- C++网络编程文件之第五章 应用层协议
- c++ Windows Socket实现最简单的C/S网络通
- C++网络编程.卷1+卷2
- 《Visual C++网络编程开发与实战》案例
- Visual C++网络编程开发与实战 案例源码
评论
共有 条评论