简单的web服务器源代码
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
#include "stdafx.h"
#include "Websys.h"
#include "WebsysDlg.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define Lnumber 5 //监听队列长度#define max1 1024
#define max2 1024*1024
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
//全局变量
unsigned long IP;//用于存储IP地址int port; //用于存储接口号char mainfile[128]; //用于存储主目录int Tnumber=0; //列表控件序号
int tnumber; //每次开启服务器的进程数
int stop; //服务器状态,0表示关闭状态,1表示开启状态CString mm_error;
SOCKET Lsock; //监听socket
CCriticalSection slock;//线程互斥信号
//全局函数
static UINT listen_sock(LPVOID n);//创建监听的sock
static UINT get_sock(LPVOID n);//建立连接,进行报文和文件的传输
class websock
{
public:
CWebsysDlg *dlg1;
};
class saddr
{
public:
SOCKET sockr;
sockaddr_in *addr;
};
websock ws;//全局主窗口类型变量
// 帮助对话框的类的定义及封装函数
class CAboutDlg : public CDialog
{
public:
CAboutDlg();
// Dialog Data
//{{AFX_DATA(CAboutDlg)
enum { IDD = IDD_ABOUTBOX };
//}}AFX_DATA
// ClassWizard generated virtual function overrides
//{{AFX_VIRTUAL(CAboutDlg)
protected:
virtual void DoDataExchange(CDataExchange* pDX); // DDX/DDV support //}}AFX_VIRTUAL
// Implementation
protected:
//{{AFX_MSG(CAboutDlg)
//}}AFX_MSG
DECLARE_MESSAGE_MAP()
};
CAboutDlg::CAboutDlg() : CDialog(CAboutDlg::IDD)
{
//{{AFX_DATA_INIT(CAboutDlg)
//}}AFX_DATA_INIT
}
void CAboutDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CAboutDlg)
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CAboutDlg, CDialog)
//{{AFX_MSG_MAP(CAboutDlg)
// No message handlers
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// 主对话框类初构造函数
CWebsysDlg::CWebsysDlg(CWnd* pParent /*=NULL*/)
: CDialog(CWebsysDlg::IDD, pParent)
{
//{{AFX_DATA_INIT(CWebsysDlg)
m_menu = _T("");
m_port = _T("");
//}}AFX_DATA_INIT
// Note that LoadIcon does not require a subsequent DestroyIcon in Win32 m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CWebsysDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CWebsysDlg)
DDX_Control(pDX, IDC_EDIT_STATUS, m_status);
DDX_Control(pDX, IDC_EDIT_ERROR, m_error);
DDX_Control(pDX, IDC_LIST, m_listcrl);
DDX_Control(pDX, IDC_EDIT_IP, m_edit_ip);
DDX_Text(pDX, IDC_EDIT_MENU, m_menu);
DDX_Text(pDX, IDC_EDIT_PORT, m_port);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CWebsysDlg, CDialog)
//{{AFX_MSG_MAP(CWebsysDlg)
ON_WM_SYSCOMMAND()
ON_WM_PAINT()
ON_WM_QUERYDRAGICON()
ON_COMMAND(ID_ABOUT, OnAbout)
ON_COMMAND(ID_RUN, OnRun)
ON_COMMAND(ID_CLOSE, OnClose)
ON_COMMAND(ID_EXIT, OnExit)
ON_BN_CLICKED(IDC_BUTTON_RUN, OnButtonRun)
ON_BN_CLICKED(IDC_BUTTON_EXIT, OnButtonExit)
ON_BN_CLICKED(IDC_BUTTON_CLOSE, OnButtonClose) ON_BN_CLICKED(IDC_SET_MENU, OnSetMenu)
ON_WM_TIMER()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
// 主对话框初始化函数