資源簡介
《Visual C++網絡編程開發與實戰》 案例源碼2.4.5.rar
代碼片段和文件信息
/*導入庫文件*/
#pragma?comment(lib“wsock32.lib“)
/*加載頭文件*/
#include?
#include?
/*自定義函數原型*/
void?initial();
int?InitSockets(void);
void?GetArgments(int?argc?char?**argv);
void?ErrorPrint(x);
void?userHelp();
int?LoopControl(SOCKET?listenfd?int?isMultiTasking);
void?Service(LPVOID?lpv);
/*定義常量*/
#define?MAX_SER?10
/*定義全局變量*/
char?*hostName;
unsigned?short?maxService;
unsigned?short??port;
/*初始化全局變量函數*/
void?initial()
{
????hostName?=?“127.0.0.1“;
????maxService?=?3;
????port?=?9999;
}
/*初始化Winsocket函數*/
int?InitSockets(void)
{
????WSADATA?wsaData;
????WORD?sockVersion;
????int?err;
????/*設置Winsock版本號*/
????sockVersion?=?MAKEWORD(?2?2?);
????/*初始化Winsock*/
????err?=?WSAStartup(?sockVersion?&wsaData?);
????/*如果初始化失敗*/
????if?(?err?!=?0?)
????{
??????printf(“Error?%d:?Winsock?not?available\n“?err);
??????return?1;
????}
????return?0;
}
/*獲取選項函數*/
void?GetArgments(int?argc?char?**argv)
{
????int?i;
????for(i=1;?i?????{
????????/*參數的第一個字符若是“-”*/
????????if?(argv[i][0]?==?‘-‘)
????????{
????????????/*轉換成小寫*/
????????????switch?(tolower(argv[i][1]))
????????????{
????????????????/*若是端口號*/
????????????????case?‘p‘:?
????????????????????if?(strlen(argv[i])?>?3)
????????????????????????port?=?atoi(&argv[i][3]);
????????????????????break;
???????????????/*若是主機名*/
???????????????case?‘h‘:?
????????????????????hostName?=?&argv[i][3];
????????????????????break;
????????????????/*最多服務次數*/
????????????????case?‘n‘:?
????????????????????maxService?=?atoi(&argv[i][3]);
????????????????????break;
????????????????/*其他情況*/
????????????????default:
????????????????????userHelp();
????????????????????break;
????????????}
????????}
????}
????return;
}
/*錯誤輸出函數*/
void?ErrorPrint(x)
{?
????printf(“Error?%d:?%s\n“?WSAGetLastError()?x);
}
/*用戶幫助函數*/
void?userHelp()
{
????printf(“userHelp:??-h:str?-p:int?-n:int\n“);
????printf(“???????????-h:str??The?host?name?\n“);
????printf(“???????????????????The?default?host?is?127.0.0.1\n“);
????printf(“???????????-p:int??The?Port?number?to?use\n“);
????printf(“???????????????????The?default?port?is?9999\n“);
????printf(“???????????-n:int??The?number?of?servicebelow?MAX_SER?\n“);
????printf(“???????????????????The?default?number?is?3\n“);
????ExitProcess(-1);
}
/*循環控制函數*/
int?LoopControl(SOCKET?listenfd?int?isMultiTasking)
{
????SOCKET?acceptfd;
????struct?sockaddr_in?clientAddr;
????int?err;
????int?nSize;
????int?serverNum?=?0;
????HANDLE?handles[MAX_SER];
????int?myID;
????
????/*服務次數小于最大服務次數*/
????while?(serverNum?????{
??????nSize?=?sizeof(clientAddr);
??????/*接收客戶端請求*/
??????acceptfd?=?accept(listenfd?(struct?sockaddr?*)
?????????????????????????&clientAddr?&nSize);
??????/*如果接收失敗*/
??????if?(acceptfd?==?INVALID_SOCKET)
??????{
??????????ErrorPrint(“Error:?accept?failed\n“);
??????????return?1;
??????}
??????/*接收成功*/
??????printf(“Acce
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件????3490816??1985-01-01?16:00??4\HTTP\Debug\HTML1.bsc
?????文件?????151619??1985-01-01?16:00??4\HTTP\Debug\HTML1.exe
?????文件?????446668??1985-01-01?16:00??4\HTTP\Debug\HTML1.ilk
?????文件??????83439??1985-01-01?16:00??4\HTTP\Debug\HTML1.obj
?????文件????8979008??1985-01-01?16:00??4\HTTP\Debug\HTML1.pch
?????文件?????640000??1985-01-01?16:00??4\HTTP\Debug\HTML1.pdb
?????文件???????7992??1985-01-01?16:00??4\HTTP\Debug\HTML1.res
?????文件??????????0??1985-01-01?16:00??4\HTTP\Debug\HTML1.sbr
?????文件??????14854??1985-01-01?16:00??4\HTTP\Debug\HTML1Doc.obj
?????文件??????????0??1985-01-01?16:00??4\HTTP\Debug\HTML1Doc.sbr
?????文件??????25371??1985-01-01?16:00??4\HTTP\Debug\HTML1View.obj
?????文件??????????0??1985-01-01?16:00??4\HTTP\Debug\HTML1View.sbr
?????文件??????31178??1985-01-01?16:00??4\HTTP\Debug\MainFrm.obj
?????文件??????????0??1985-01-01?16:00??4\HTTP\Debug\MainFrm.sbr
?????文件?????117029??1985-01-01?16:00??4\HTTP\Debug\StdAfx.obj
?????文件????1575299??1985-01-01?16:00??4\HTTP\Debug\StdAfx.sbr
?????文件??????18426??1985-01-01?16:00??4\HTTP\Debug\ToolDlg.obj
?????文件??????????0??1985-01-01?16:00??4\HTTP\Debug\ToolDlg.sbr
?????文件?????271360??1985-01-01?16:00??4\HTTP\Debug\vc60.idb
?????文件?????430080??1985-01-01?16:00??4\HTTP\Debug\vc60.pdb
?????文件??????63926??1985-01-01?16:00??4\HTTP\Debug\webbrowser2.obj
?????文件??????????0??1985-01-01?16:00??4\HTTP\Debug\webbrowser2.sbr
?????文件???????1112??1985-01-01?16:00??4\HTTP\Dlg.cpp
?????文件???????1167??1985-01-01?16:00??4\HTTP\Dlg.h
?????文件??????45604??1985-01-01?16:00??4\HTTP\HTML1.APS
?????文件???????2467??1985-01-01?16:00??4\HTTP\HTML1.clw
?????文件???????6436??1985-01-01?16:00??4\HTTP\HTML1.cpp
?????文件???????5181??1985-01-01?16:00??4\HTTP\HTML1.dsp
?????文件????????562??1985-01-01?16:00??4\HTTP\HTML1.dsw
?????文件???????1457??1985-01-01?16:00??4\HTTP\HTML1.h
............此處省略266個文件信息
評論
共有 條評論