通過前面的筆記
我們可以知道:乙個客戶端想要發起一次通訊,先決條件就是需要知道執行著伺服器端程式的主機的ip位址是多少,埠號是多少。然後我們才能夠通過這個位址向伺服器特定的應用程式傳送資訊。對於網路上的兩台計算機來說,使用者操作的計算機稱為本地主機,與該計算機通訊的另一台計算機稱為遠端主機。識別遠端主機依靠兩部分組成:一是主機標識,用於識別與本地主機通訊的遠端主機;二是埠號,用於識別是再和遠端主機中的哪個程序通訊。在c#開發中system.net
命名空間為網路上使用的多種協議提供了簡單的程式設計介面。我們可以利用這個命名空間下的類,編寫基於網路標準協議的應用程式時,不必去考慮各種不同協議的具體細節。在獲取主機(local和remote)位址資訊時,我們需要使用和學習這幾個最基本的類(更加詳細api可以參考msdn,下面會給出對應鏈結),用它們來實現相關的功能。
1檢視執行示例程式效果://獲取本地主機名
2string localhostname =dns.gethostname();34
//通過主機名獲取該主機下儲存所有ip位址資訊的容器
5 iphostentry local =dns.gethostentry(hostname);67
//8 ipaddress iplist =local.addresslist;910
//獲取本機回環位址
11 ipaddress loopbackip =ipaddress.loopback;
1213
//通過它parse函式構造ipaddress物件
14 ipaddress localip = ipaddress.parse("
192.168.1.101");
1516
//通過ipaddress物件和埠號構造ipendpoint物件
17 ipendpoint iep = new ipendpoint(localip, 80);
網路介面卡又被稱為網絡卡或者網路介面卡(nic),是連線計算機和網路的硬體裝置。網絡卡主要的工作原理是:整理計算機發往通道上的資料,並將資料分解為適當大小的資料報之後向網路上傳送。在.net開發中我們使用system.net.networkinformation
該命名空間還包含實現 ping 實用工具的類。
可以使用 ping 和相關的類檢查是否可通過網路連線到計算機。
2.1 獲取網絡卡資訊
獲取網絡卡資訊、網路連線和網路速度以及網路協議版本(包括:ipv4和ipv6)的網路介面資訊,我們使用下面的兩個類:
networkinte***ce下面我們通過乙個簡單的windows forms示例程式來學習如何獲取網路介面的配置和統計資訊,主要**如下:ipinte***ceproperties
類:可用於訪問支援 ipv4 或 ipv6 的網路介面的配置和位址資訊。該類是乙個抽象類,不能直接建立,使用networkinte***ce.getipproperties()
返回例項。
1執行例項程式效果://獲取主機上所有的網路介面卡物件陣列
2 networkinte***ce adapters =networkinte***ce.getallnetworkinte***ces();34
//獲取該網路介面卡的配置物件
5 ipinte***ceproperties adapterproperties =adapters[i].getipproperties();67
//獲取並該網路介面卡dns伺服器位址資訊
8 ipaddresscollection dnsservers = adapterproperties.dnsaddresses;
2.2 網路流量檢測
我們可以使用system.net.networkinformation命名空間的ipglobalproperties
類獲取網路介面卡接收、**、丟棄、傳送的資料報數目,該類提供有關本地計算機的網路連線的資訊。檢測網路流量是我們通過使用ipglobalproperties類的getipglobalproperties()
1下面我們還是通過上面的**來建立乙個小例子來學習如何檢測網路流量,程式執行效果如下://獲取包含本機的網路連線和通訊統計資料的資訊的物件
2 ipglobalproperties properties =ipglobalproperties.getipglobalproperties();34
//獲取本機ipv4統計資料
5 ipglobalstatistics ipstate = properties.getipv4globalstatistics();
2.3 網路連線檢測
我們知道可以利用cmd命令列中輸入的ping命令,通過呼叫ping.exe命令列程式來檢測網路連線,能夠快速判斷出網路故障。在.net開發環境中我們可以通過使用system.net.networkinformation命名空間下的ping
類、pingoptions類和pingreply類來實現類似於ping.exe命令列的功能。
示例程式主要**如下:1示例程式執行效果://獲取主機位址
2string hostaddress = this
.txt_hostaddress.text.trim();3//
構造ping例項
4 ping pingsender = new
ping();5//
ping選項設定
6 pingoptions options = new
pingoptions();
7 options.dontfragment = true;8
//測試資料
9string testdata = "
test data";
10byte buffer =encoding.ascii.getbytes(testdata);
11//
設定超時時間
12int timeout = 120;13
//呼叫同步的send方法傳送資料,將結果儲存至pingreply例項
14 pingreply reply = pingsender.send(hostaddress, timeout, buffer, options);
msdn .net framework 4 類庫
《c#網路應用程式設計2》
晴天豬出處:
C Socket程式設計 2 識別網路主機
通過前面的筆記 我們可以知道 乙個客戶端想要發起一次通訊,先決條件就是需要知道執行著伺服器端程式的主機的ip位址是多少,埠號是多少。然後我們才能夠通過這個位址向伺服器特定的應用程式傳送資訊。對於網路上的兩台計算機來說,使用者操作的計算機稱為本地主機,與該計算機通訊的另一台計算機稱為遠端主機。識別遠端...
C Socket程式設計 2 識別網路主機
通過前面的筆記我們可以知道 乙個客戶端想要發起一次通訊,先決條件就是需要知道執行著伺服器端程式的主機的ip位址是多少,埠號是多少。然後我們才能夠通過這個位址向伺服器特定的應用程式傳送資訊。對於網路上的兩台計算機來說,使用者操作的計算機稱為本地主機,與該計算機通訊的另一台計算機稱為遠端主機。識別遠端主...
C Socket 網路程式設計
過程 img 入門級的測試程式 1 客戶端 include include pragma comment lib,ws2 32.lib tcp 客戶端 void main void if lobyte wsadata.wversion 1 hibyte wsadata.wversion 1 載入套接...