資源簡介
首先先介紹一些基本概念:
NAT(Network Address Translators),網絡地址轉換:網絡地址轉換是在IP地址日益缺乏的情況下產生的,它的主要目的就是為了能夠地址重用。NAT分為兩大類,基本的NAT和NAPT(Network Address/Port Translator)。
最開始NAT是運行在路由器上的一個功能模塊。
最先提出的是基本的NAT,它的產生基于如下事實:一個私有網絡(域)中的節點中只有很少的節點需要與外網連接(呵呵,這是在上世紀90年代中期提出的)。那么這個子網中其實只有少數的節點需要全球唯一的IP地址,其他的節點的IP地址應該是可以重用的。
因此,基本的NAT實現的功能很簡單,在子網內使用一個保留的IP子網段,這些IP對外是不可見的。子網內只有少數一些IP地址可以對應到真正全球唯一的IP地址。如果這些節點需要訪問外部網絡,那么基本NAT就負責將這個節點的子網內IP轉化為一個全球唯一的IP然后發送出去。(基本的NAT會改變IP包中的原IP地址,但是不會改變IP包中的端口)
代碼片段和文件信息
/*?P2P?程序客戶端
?*?
?*?文件名:P2PClient.c
?*
?*?日期:2004-5-21
?*
?*?作者:shootingstars(zhouhuis22@sina.com)
?*
?*/
#pragma?comment(lib“ws2_32.lib“)
#include?“windows.h“
#include?“..\proto.h“
#include?“..\Exception.h“
#include?
using?namespace?std;
UserList?ClientList;
#define?COMMANDMAXC?256
#define?MAXRETRY????5
SOCKET?PrimaryUDP;
char?UserName[10];
char?ServerIP[20];
bool?RecvedACK;
void?InitWinSock()
{
WSADATA?wsaData;
if?(WSAStartup(MAKEWORD(2?2)?&wsaData)?!=?0)
{
printf(“Windows?sockets?2.2?startup“);
throw?Exception(““);
}
else{
printf(“Using?%s?(Status:?%s)\n“
wsaData.szDescription?wsaData.szSystemStatus);
printf(“with?API?versions?%d.%d?to?%d.%d\n\n“
LOBYTE(wsaData.wVersion)?HIBYTE(wsaData.wVersion)
LOBYTE(wsaData.wHighVersion)?HIBYTE(wsaData.wHighVersion));
}
}
SOCKET?mksock(int?type)
{
SOCKET?sock?=?socket(AF_INET?type?0);
if?(sock?0)
{
????????printf(“create?socket?error“
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????目錄??????????0??2006-06-15?07:38??P2P
?????文件????????498??2004-05-21?21:58??P2P\Exception.h
?????文件???????1725??2004-05-21?22:35??P2P\proto.h
?????文件?????????93??2004-05-25?09:35??P2P\readme.txt
?????文件???????8733??2004-05-22?11:16??P2P\UDP穿越NAT.TXT
?????目錄??????????0??2006-06-15?07:38??P2P\P2PServer
?????文件???????5750??2004-11-03?12:17??P2P\P2PServer\P2PServer.cpp
?????文件???????4320??2004-05-21?22:55??P2P\P2PServer\P2PServer.dsp
?????文件????????541??2004-05-21?21:51??P2P\P2PServer\P2PServer.dsw
?????文件??????19456??2004-05-22?09:24??P2P\P2PServer\P2PServer.ncb
?????文件??????48640??2004-05-21?22:55??P2P\P2PServer\P2PServer.opt
?????文件????????252??2004-05-21?22:55??P2P\P2PServer\P2PServer.plg
?????文件????????907??2004-05-22?08:47??P2P\P2PServer\P2PServer.sln
????..A..H.??????8192??2004-05-22?09:24??P2P\P2PServer\P2PServer.suo
?????文件???????4305??2004-05-22?08:47??P2P\P2PServer\P2PServer.vcproj
?????目錄??????????0??2006-06-15?07:38??P2P\P2PClient
?????文件???????9841??2004-05-21?22:54??P2P\P2PClient\P2PClient.cpp
?????文件???????4324??2004-05-21?22:55??P2P\P2PClient\P2PClient.dsp
?????文件????????541??2004-05-21?21:55??P2P\P2PClient\P2PClient.dsw
?????文件??????19456??2004-05-22?09:24??P2P\P2PClient\P2PClient.ncb
?????文件??????48640??2004-05-21?22:55??P2P\P2PClient\P2PClient.opt
?????文件????????252??2004-05-21?22:55??P2P\P2PClient\P2PClient.plg
?????文件????????907??2004-05-22?08:47??P2P\P2PClient\P2PClient.sln
????..A..H.??????8192??2004-05-22?09:24??P2P\P2PClient\P2PClient.suo
?????文件???????4361??2004-05-22?08:47??P2P\P2PClient\P2PClient.vcproj
-----------?---------??----------?-----??----
???????????????199926????????????????????25
- 上一篇:c++ 獲取當前執行位置的調用棧
- 下一篇:stm8s LED 入門級
評論
共有 條評論