资源简介

哈尔滨工业大学16级的计算机网络实验一 截止到2019年初这是最新的版本!! 实验及报告清晰明了 (已经过TA验收)可以直接上交

资源截图

代码片段和文件信息

#include “stdafx.h“
#include 
#include 
#include 
#include 
#pragma comment(lib“Ws2_32.lib“)
#define MAXSIZE 65507 //发送数据报文的最大长度
#define HTTP_PORT 80 //http 服务器端口

//Http 重要头部数据
struct HttpHeader {
char method[4]; // POST 或者 GET,注意有些为 CONNECT,本实验暂不考虑
char url[1024];  // 请求的 url
char host[1024]; // 目标主机
char cookie[1024 * 10]; //cookie
HttpHeader() {
ZeroMemory(this sizeof(HttpHeader));
}
};
BOOL InitSocket();
void ParseHttpHead(char *buffer HttpHeader * httpHeader);
BOOL ConnectToServer(SOCKET *serverSocket char *host);
unsigned int __stdcall ProxyThread(LPVOID lpParameter);
//代理相关参数
SOCKET ProxyServer;
sockaddr_in ProxyServerAddr;
const int ProxyPort = 10240;
//由于新的连接都使用新线程进行处理,对线程的频繁的创建和销毁特别浪费资源
//可以使用线程池技术提高服务器效率
//const int ProxyThreadMaxNum = 20;
//HANDLE ProxyThreadHandle[ProxyThreadMaxNum] = {0};
//DWORD ProxyThreadDW[ProxyThreadMaxNum] = {0};
struct ProxyParam {
SOCKET clientSocket;
SOCKET serverSocket;
};
int _tmain(int argc _TCHAR* argv[])
{
printf(“代理服务器正在启动\n“);
printf(“初始化...\n“);
if (!InitSocket()) {
printf(“socket 初始化失败\n“);
return -1;
}
printf(“代理服务器正在运行,监听端口 %d\n“ ProxyPort);
SOCKET acceptSocket = INVALID_SOCKET;
ProxyParam *lpProxyParam;
HANDLE hThread;
DWORD dwThreadID;
//代理服务器不断监听
while (true) {
acceptSocket = accept(ProxyServer NULL NULL);
lpProxyParam = new ProxyParam;
if (lpProxyParam == NULL) {
continue;
}
lpProxyParam->clientSocket = acceptSocket;
hThread = (HANDLE)_beginthreadex(NULL 0
&ProxyThread (LPVOID)lpProxyParam 0 0);
CloseHandle(hThread);
Sleep(200);
}
closesocket(ProxyServer);
WSACleanup();
return 0;
}
//************************************
// Method: InitSocket
// FullName: InitSocket
// Access: public
// Returns: BOOL
// Qualifier: 初始化套接字
//************************************
BOOL InitSocket() {
//加载套接字库(必须)
WORD wVersionRequested;
WSADATA wsaData;
//套接字加载时错误提示
int err;
//版本 2.2
wVersionRequested = MAKEWORD(2 2);
//加载 dll 文件 Scoket 库
err = WSAStartup(wVersionRequested &wsaData);
if (err != 0) {
//找不到 winsock.dll
printf(“加载 winsock 失败, 错误代码为: %d\n“ WSAGetLastError());
return FALSE;
}
if (LOBYTE(wsaData.wVersion) != 2 || HIBYTE(wsaData.wVersion) != 2)
{
printf(“不能找到正确的 winsock 版本\n“);
WSACleanup();
return FALSE;
}
ProxyServer = socket(AF_INET SOCK_STREAM 0);
if (INVALID_SOCKET == ProxyServer) {
printf(“创建套接字失败,错误代码为:%d\n“ WSAGetLastError());
return FALSE;
}
ProxyServerAddr.sin_family = AF_INET;
ProxyServerAddr.sin_port = htons(ProxyPort);
ProxyServerAddr.sin_addr.S_un.S_addr = INADDR_ANY;
if (bind(ProxyServer (SOCKADDR*)&ProxyServerAddr sizeof(SOCKADD
R)) == SOCKET_ERROR) {
printf(“绑定套接字失败\n“);
return FALSE;
}
if (listen(ProxyServer SOMAXCONN) == SOCKET_ERROR) {
printf(“监听端口%d 失败“ ProxyPort);
return FALSE;
}
return TRUE;
}
//************************************
// Method: ProxyThread
// FullName: ProxyThread
// Access: public
// Returns: unsigned 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-11-03 23:13  徐立群计网实验一报告\
     目录           0  2018-11-03 11:14  徐立群计网实验一报告\http_proxy\
     文件        2518  2016-06-08 21:48  徐立群计网实验一报告\http_proxy\.gitattributes
     文件        3138  2016-06-08 21:48  徐立群计网实验一报告\http_proxy\.gitignore
     目录           0  2018-11-02 18:50  徐立群计网实验一报告\http_proxy\.vs\
     目录           0  2018-11-02 18:50  徐立群计网实验一报告\http_proxy\.vs\Net_project_http\
     目录           0  2018-11-03 11:23  徐立群计网实验一报告\http_proxy\.vs\Net_project_http\v15\
     文件       25600  2018-11-03 11:23  徐立群计网实验一报告\http_proxy\.vs\Net_project_http\v15\.suo
     文件    37408768  2018-11-03 11:23  徐立群计网实验一报告\http_proxy\.vs\Net_project_http\v15\Browse.VC.db
     目录           0  2018-11-02 18:51  徐立群计网实验一报告\http_proxy\.vs\Net_project_http\v15\ipch\
     目录           0  2018-11-02 18:51  徐立群计网实验一报告\http_proxy\.vs\Net_project_http\v15\ipch\AutoPCH\
     目录           0  2018-11-02 18:51  徐立群计网实验一报告\http_proxy\.vs\Net_project_http\v15\ipch\AutoPCH\56b754ea33d9dbb2\
     文件    80019456  2018-11-03 11:14  徐立群计网实验一报告\http_proxy\.vs\Net_project_http\v15\ipch\AutoPCH\56b754ea33d9dbb2\源1.ipch
     目录           0  2018-11-03 11:16  徐立群计网实验一报告\http_proxy\Net_project_http\
     文件        5931  2018-11-02 18:50  徐立群计网实验一报告\http_proxy\Net_project_http\Net_project_http.vcxproj
     文件        1041  2016-06-08 21:48  徐立群计网实验一报告\http_proxy\Net_project_http\Net_project_http.vcxproj.filters
     文件         165  2018-11-02 18:52  徐立群计网实验一报告\http_proxy\Net_project_http\Net_project_http.vcxproj.user
     目录           0  2018-11-02 18:52  徐立群计网实验一报告\http_proxy\Net_project_http\x64\
     目录           0  2018-11-03 11:16  徐立群计网实验一报告\http_proxy\Net_project_http\x64\Debug\
     文件        1480  2018-11-03 11:16  徐立群计网实验一报告\http_proxy\Net_project_http\x64\Debug\Net_project_http.log
     目录           0  2018-11-03 11:16  徐立群计网实验一报告\http_proxy\Net_project_http\x64\Debug\Net_project_http.tlog\
     文件         616  2018-11-03 11:16  徐立群计网实验一报告\http_proxy\Net_project_http\x64\Debug\Net_project_http.tlog\CL.command.1.tlog
     文件       27318  2018-11-03 11:16  徐立群计网实验一报告\http_proxy\Net_project_http\x64\Debug\Net_project_http.tlog\CL.read.1.tlog
     文件         516  2018-11-03 11:16  徐立群计网实验一报告\http_proxy\Net_project_http\x64\Debug\Net_project_http.tlog\CL.write.1.tlog
     文件         203  2018-11-03 11:16  徐立群计网实验一报告\http_proxy\Net_project_http\x64\Debug\Net_project_http.tlog\Net_project_http.lastbuildstate
     文件        1186  2018-11-03 11:16  徐立群计网实验一报告\http_proxy\Net_project_http\x64\Debug\Net_project_http.tlog\link.command.1.tlog
     文件        2420  2018-11-03 11:16  徐立群计网实验一报告\http_proxy\Net_project_http\x64\Debug\Net_project_http.tlog\link.read.1.tlog
     文件         506  2018-11-03 11:16  徐立群计网实验一报告\http_proxy\Net_project_http\x64\Debug\Net_project_http.tlog\link.write.1.tlog
     文件      347136  2018-11-03 11:16  徐立群计网实验一报告\http_proxy\Net_project_http\x64\Debug\vc141.idb
     文件      544768  2018-11-03 11:16  徐立群计网实验一报告\http_proxy\Net_project_http\x64\Debug\vc141.pdb
     文件      496221  2018-11-03 11:16  徐立群计网实验一报告\http_proxy\Net_project_http\x64\Debug\源1.obj
............此处省略14个文件信息

评论

共有 条评论