程志祥
摘要:在 Visual Studio 2012應(yīng)用程序軟件中,選擇C#開發(fā)環(huán)境,分析了網(wǎng)絡(luò)編程經(jīng)常使用的類以及它們的屬性、方法和用途等,通過使用網(wǎng)絡(luò)編程,設(shè)計了服務(wù)器與客戶機通訊程序,可以達到服務(wù)端與客戶端雙向通信的目的,實驗表明,本設(shè)計具有友好的界面,可以較好地完成通信。
關(guān)鍵詞:VS2012;C#;TCPClient 類;TCPListener 類;Socket類
中圖分類號:TP311 文獻標識碼:A 文章編號:1009-3044(2018)17-0031-02
C#是Microsoft在2000年7月推出.NET Framework的初版時提出的一種全新語言[1]。其派生于C/C++,語法更加簡化,非常適合快速學(xué)習(xí)開發(fā),C#語言吸取了C/C++的優(yōu)點,摒棄了它們的煩瑣之處。
利用Visual C#語言可以方便快速編寫應(yīng)用程序,互聯(lián)網(wǎng)時代已經(jīng)離不開網(wǎng)絡(luò)信息的交換,為了方便不同計算機和不同網(wǎng)絡(luò)之間相互連接,進行數(shù)據(jù)資源共享,需要使用網(wǎng)絡(luò)通信協(xié)議。當(dāng)前,TCP/IP協(xié)議是用得比較普遍的類型 [2]。
1 實現(xiàn)網(wǎng)絡(luò)通信的主要類
網(wǎng)絡(luò)通信一般會用到三大類,使用Sockets類具有許多優(yōu)勢,與Sockets網(wǎng)絡(luò)應(yīng)用程序有關(guān)的類處于System.Net.Sockets命名空間中,Socket類擁有許多屬性和方法,完全支持套接字的編程,可以實現(xiàn)對端口的綁定、監(jiān)聽以及連接、數(shù)據(jù)傳輸?shù)饶康腫3]。
1.1 TcpClient類
基于TcpClient類的編程,使得以傳輸控制協(xié)議TCP網(wǎng)絡(luò)通信的調(diào)用形式更為方便,其主要用于Client端編程,如表1列出了其常用屬性和方法。
1.2 TcpListener類
TCP協(xié)議服務(wù)器端的設(shè)計通常會用到TcpListener類,它屬于.NET框架下網(wǎng)絡(luò)通信中的應(yīng)用層,通常是監(jiān)視TCP端口上客戶端的請求,如表2列出了其常用的屬性和方法。
1.3 Socket類
Socket類提供了對套接字的支持[3],由于C#語言語法簡潔、功能強大,因此基于套接字的網(wǎng)絡(luò)編程變得十分簡單,如表3列出了其常見屬性和方法。
2 通信機制的設(shè)計與實現(xiàn)
TCP網(wǎng)絡(luò)通訊運行時,它將會先初始化服務(wù)器端的程序,接著使用Socket類來創(chuàng)立一個實例,繼而使用Bind()方法將實例與服務(wù)器IP地址綁定在一起,做好準備工作;接著使用Listener()方法進入開始監(jiān)聽客戶機端的狀態(tài),同時指明等候服務(wù)器請求隊列的長度;然后,使用Accept()方法等候客戶端發(fā)出連接申請。客戶端與服務(wù)端一樣,也會使用Socket創(chuàng)立一個實例,然后使用Connect()方法與服務(wù)器建立連接。在服務(wù)器端監(jiān)聽的過程中,當(dāng)客戶端發(fā)出連接請求且被服務(wù)器端接收到,就表明服務(wù)器端與客戶機端連接成功,此時可以進行通信了,可利用網(wǎng)絡(luò)流 NetworkStream 的讀Read()方法以及寫Write()方法達到發(fā)送或接收數(shù)據(jù)包的目的,其通訊流程如圖1所示。
3 實驗結(jié)果與分析
服務(wù)端與客戶端界面設(shè)計如上圖所示,服務(wù)端輸入有效且格式正確的IP地址以及監(jiān)聽端口,點擊開始監(jiān)聽按鈕,客戶機端輸入相同的IP地址和請求端口,點擊請求連接按鈕,在服務(wù)器端statusStrip1上顯示與客戶建立連接,如圖2所示;在客戶機端的statusStrip1上也會自動顯示與主機和端口連接成功,如圖3所示。此時服務(wù)器端和客戶機端就能互相通信了。如圖4所示,在服務(wù)器端發(fā)送消息框中輸入問候語,點擊發(fā)送信息按鈕,消息成功發(fā)送,如圖5所示,在客戶機端的接受消息框中會顯示所接收到的信息,即服務(wù)器端的發(fā)送消息框中的信息,消息成功接收。如圖5所示,在客戶機端發(fā)送信息框中輸入回復(fù)的消息,點擊發(fā)送消息按鈕,信息成功地從客戶機端發(fā)送出去。如圖4所示,在服務(wù)器端的接收信息框中會顯示來自客戶機端的消息,即消息成功接收。達到了服務(wù)器端和客戶機端雙向通信的目的。
4 結(jié)語
筆者采用Visual Studio 2012 開發(fā)平臺,利用C#的Windows窗體應(yīng)用程序進行了網(wǎng)絡(luò)通信的探討,用到了網(wǎng)絡(luò)編程常用的類,方便快速地建立了網(wǎng)絡(luò)連接,Sever端和Client端成功通信,完成了數(shù)據(jù)發(fā)送與接收。TCP在連接方式上一般能夠分為長期連接和短期連接,考慮TCP通訊的特點和本設(shè)計的主旨,筆者選用長期連接,連接成功后,通訊不會主動閉塞,服務(wù)器端和客戶機端可以長時間通信,符合聊天的特點。
參考文獻:
[1] Kali Watson,Christian Nagel .C#入門經(jīng)典[M].齊立波,譯.5版.北京:清華大學(xué)出版社,2010 .
[2] 劉蓓麗,劉大紅.基于Visual C#的網(wǎng)絡(luò)通信編程技術(shù)[J] .Electronic Science and Technology,2013(11):151-153
[3] 周存杰 .C#網(wǎng)絡(luò)編程實例教程[M].北京:北京希望電子出版社,2002.