91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

資源簡介

這是一段模擬路由器的源代碼和可執行文件,模擬的是距離向量算法(dv),內有非阻塞socket的具體實現,包含說明文檔,希望對初學者有所幫助。

資源截圖

代碼片段和文件信息

#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#pragma?comment(lib?“ws2_32.lib?“)

using?namespace?std;

int?nMyPort;

//標志路由表是否改變,如果改變值為true,則打印,否則值為false,不打印
bool?bChanged?=?false;

string?sOriginalOupput?=?““;
typedef?struct?DistanceNextHop
{
int?nDistance;
int?nNext;
vector?viPath;
DistanceNextHop()
{
nDistance?=?99;
}
}Distance_NextHop;

//string表示路由器的名稱,相當于計時器,int初始值為0,如果int>=4則說明string死掉了
map?mniRouterCount;

//本路由器的路由信息。
//目的主機名稱,距離,下一跳主機名稱。
map?mnstRouterInformation;

//存儲監聽端口線程發送來的消息
//第一個string存儲源主機的主機名稱,第二個存儲源主機發來的路由表結構,每行為一個路由表信息,每行包含三個數據
//分別為目的主機,距離,?下一跳主機名稱,中間用Tab隔開。
map?mnsSocketContent;

//監聽端口存儲結構
vector?vnNeighborPort;
//下一跳與所對應的端口號
map?mnnRouterPort;
int?nRouterID;

//int?nTimes?=?0;

//路由表互斥變量。

HANDLE?hMutexRoutingTable?hMutexKeepAlive?hMutexRouterPort;

map?miiKeepAlive;


#define?ARRAYSIZE?1024
/*
[功能說明]
向另外一個端口發送數據
[參數說明]
char*?pContent:發送數據的內容
u_short?us:發送數據的目標端口號
[返回值說明]
*/
void?Client_Sender(string?str?u_short?us);
/*
[功能說明]
監聽端口并接受發送數據

[參數說明]
[返回值說明]
*/
DWORD?WINAPI?Server_Receive(LPVOID?param);
/*
[功能說明]
接受指令

[參數說明]
[返回值說明]
*/
DWORD?WINAPI?Order(LPVOID?param);

/*
[功能說明]
將字符串lpszText按固定特征串lpszDelimiter切分,存入向量vResult中

[參數說明]
lpszText:?待切分串
lpszDelimiter:?切分間隔串
vResult:存儲切分結果

[返回值說明]
成功,返回true,否則返回false
*/
bool?gfn_bSplit(const?char*?lpszText?vector&?vResult?const?char*?lpszDelimiter);

int?main(int?avgchar*?arg)
{
int?nNeighborPort?=?1;
cin>>nRouterID;
cin>>nMyPort;
while(nNeighborPort?!=?0)
{
cin>>nNeighborPort;
vnNeighborPort.push_back(nNeighborPort);
}
vnNeighborPort.erase(--vnNeighborPort.end());
//? //測試
//? nRouterID?=?1;
//? nMyPort?=?3001;
//? vnNeighborPort.push_back(3001);
//? //測試
//路由表添加第一項,即本路由的信息。
Distance_NextHop?objDistance_NextHop;
objDistance_NextHop.nDistance?=?0;
objDistance_NextHop.nNext?=?nRouterID;
objDistance_NextHop.viPath.push_back(nRouterID);
mnstRouterInformation[nRouterID]?=?objDistance_NextHop;


//創建互斥變量
hMutexRoutingTable?=?::CreateMutex(NULL?TRUE?(LPCWSTR)“My_MutexRoutingTable“);
hMutexKeepAlive?=?::CreateMutex(NULL?TRUE?(LPCWSTR)“My_MutexKeepAlive“);
hMutexRouterPort?=?::CreateMutex(NULL?TRUE?(LPCWSTR)“My_MutexRouterPort“);
//動態創建監聽端口線程
//動態創建監聽端口線程
HANDLE?handle?handleOrder;
DWORD?dw;
handle?=?::CreateThread(NULLNULLServer_ReceiveNULL0&dw);
::ResumeThread(handle);
handleOrder?=?::CreateThread(NULLNULLOrderNULL0&dw);
::ResumeThread(handleOrder);

string?str?=?““;
//主程序,先發送自己的路由信息給相鄰路由器,發送完成后,處理接收到的信息。
while(1)
{
bChanged?=?false;
Sleep(2000);
//檢查是否有路由器宕機
map::iterator?miiIt;
::WaitForSingleobject(hMutexKeepAlive?50L);
for?(miiIt=miiKeepAliv

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----

?????文件??????38912??2011-11-29?22:32??路由器dv算法模擬\RUN\a\RouterDemo_a.exe

?????文件??????38912??2011-11-29?22:31??路由器dv算法模擬\RUN\b\RouterDemo_b.exe

?????文件??????38912??2011-11-29?22:32??路由器dv算法模擬\RUN\c\RouterDemo_c.exe

?????文件??????38912??2011-11-29?22:32??路由器dv算法模擬\RUN\d\RouterDemo_d.exe

?????文件??????38912??2011-11-29?22:32??路由器dv算法模擬\RUN\e\RouterDemo_e.exe

?????文件??????38912??2011-11-29?22:32??路由器dv算法模擬\RUN\f\RouterDemo_f.exe

?????文件????????224??2011-11-22?21:37??路由器dv算法模擬\RUN\Routers_run.bat

?????文件??????18209??2011-11-29?13:59??路由器dv算法模擬\SRC\RouterDemo.cpp

?????文件?????343040??2012-01-16?15:10??路由器dv算法模擬\距離向量算法路由器模擬.doc

?????目錄??????????0??2011-11-29?22:34??路由器dv算法模擬\RUN\a

?????目錄??????????0??2011-11-29?22:34??路由器dv算法模擬\RUN\b

?????目錄??????????0??2011-11-29?22:34??路由器dv算法模擬\RUN\c

?????目錄??????????0??2011-11-29?22:34??路由器dv算法模擬\RUN\d

?????目錄??????????0??2011-11-29?22:34??路由器dv算法模擬\RUN\e

?????目錄??????????0??2011-11-29?22:34??路由器dv算法模擬\RUN\f

?????目錄??????????0??2011-11-29?22:34??路由器dv算法模擬\RUN

?????目錄??????????0??2011-11-30?00:28??路由器dv算法模擬\SRC

?????目錄??????????0??2012-01-16?15:10??路由器dv算法模擬

-----------?---------??----------?-----??----

???????????????594945????????????????????18


評論

共有 條評論