一.前言:
這不是p2p,就是監聽埠
二.基本類介紹:
1.listener類:
listener類是用來監聽新的連線。當它的乙個物件被建立並開啟後,該物件就開始不斷監聽來自網路中的連線請求。一旦有了乙個連線請求,該物件就設法 建立連線並取得它的位元組流進而轉化成字串顯示在控制台中。當乙個連線結束後,該物件就繼續進行監聽來自網路中的連線請求。
**以及注釋如下:
namespace p2ptest
public void stop()
private void listen()
catch(exception)}}
}對send()函式的補充說明:在try塊中,我們根據遠端計算機的ip位址在埠5656(要確保埠號統一)建立了乙個tcpclient物件。然後,我們建立乙個 networkstream 和乙個stremwriter物件來傳送我們的資訊。在catch塊中,我們用它來捕獲一般的例外,比如遠端計算機拒絕連線請求、網路不通什麼的。
3.inputhandler類:
inputhandler類主要用來控制使用者輸入。
**以及注釋如下:
private static listener li;//乙個靜態的listener物件
private string inparam;
private string ainput;//陣列ainput用於接受使用者輸入的資訊
對inputhandler類的補充說明:
該類中有乙個靜態的listener物件li,一旦計算機執行此程式並執行」start」操作,該計算機就可以成為網路中的伺服器來監聽其他計算機的連線 請求。而該類的核心部分是乙個switch case語句系列,通過不同的操作,我們可以使計算機扮演不同的角色:」send」操作表明該計算機相對目的計算機而言成了客戶端;而」start」操作 就將計算機自身置為伺服器端,這正體現了p2p的既是伺服器端又是客戶端的」非中心化」的原則;同時程式也提供了一些其他的輔助操作。
4.initialize類:
**以及注釋如下:
到此為止,四個類已經介紹完畢,我想大家也早已等不及了吧,下面就簡單給大家介紹一下具體實現程式的方法。
三.實現方法:
首先,開啟visual studio.net,新建乙個名為p2ptest的控制台應用程式的visual c#專案,圖示如下:
圖1其次,將以上四個類分別儲存為四個檔案:listener.cs,sender.cs,inputhandler.cs,initialize.cs。然 後將這四個檔案新增到當前的工程中,同時把原有的主檔案刪除即可(因為在initialize.cs中已經有主函式了)。
最後,按ctrl+f5即可執行程式了。
為了進行測試,我們需要開啟兩個p2ptest程式,乙個作為伺服器端,另乙個作為客戶端。伺服器端的圖示如下(此時已經開始監聽了):
圖2客戶端的圖示如下(輸入命令列:send 10.85.7.79 hello,i』m pitt.can you hear me??):
圖3再看伺服器端的情況,圖示如下:
圖4從圖示可以看到伺服器端已經收到訊息了。同時,只要客戶端也開啟了監聽功能,伺服器端也就能向客戶端傳送資訊了。這樣它們的關係就不再是伺服器-客戶 機的關係了,而是peer-to-peer的關係了。
四.總結:
現在乙個很基本的p2p應用程式以及完成,通過它,我們可以利用p2p技術的基本特性實現點對點通訊。通過這個程式,我相信大家對c#下的p2p程式設計應該 有了大致的了解。對於這個程式,不足的一點是功能比較簡單,只可以傳送、接受資訊,而且還是基於控制台的,讀者可以試著開發出功能更強大的基於 windows forms的p2p應用程式。
用Visual C 輕鬆實現報表處理
資料庫在企業軟體系統中應用廣泛,而報表的顯示與列印成為此類軟體必備的功能 前言資料庫在企業軟體系統中應用廣泛,而報表的顯示與列印成為此類軟體必備的功能。可惜vc 並沒有整合報表處理工具,但其強大的功能再加上市面上功能完備的報表處理工具使這一工作變得容易,本文介紹了在vc 環境中利用seagate公司...
用Visual C 實現網路封包監視
本文向大家介紹windows sockets的一些關於用c 實現的原始套接字 raw socket 的程式設計,以及在此基礎上實現的網路封包監視技術。同winsock1相比,winsock2最明顯的就是支援了raw socket套接字型別,使用raw socket,可把網絡卡設定成混雜模式,在這種模...
用Visual C 實現排序演算法大全
1.引言 2005年10月25 26日,包括筆者在內的十多位成員組隊參加了武漢原動力的野外拓展 outward bound 在攀岩懸崖之前,教官組織了這樣的乙個遊戲專案 教官將團隊裡的所有成員分開,然後用布條蒙上大家的眼睛,接著給每人乙個3位或4位的數字。他要求成員們蒙著眼睛集合,在不說話也看不到彼...