資源簡介
哈爾濱工業大學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\li
?????文件????????2420??2018-11-03?11:16??徐立群計網實驗一報告\http_proxy\Net_project_http\x64\Debug\Net_project_http.tlog\li
?????文件?????????506??2018-11-03?11:16??徐立群計網實驗一報告\http_proxy\Net_project_http\x64\Debug\Net_project_http.tlog\li
?????文件??????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個文件信息
- 上一篇:TimingDesigner 9.103.rar
- 下一篇:圖片旋轉特效示意源碼
評論
共有 條評論