VisualC 中託管Socket的實現方法 二

2021-04-09 02:27:52 字數 2889 閱讀 8833

五.利用socket來接收資料:

visual c#在使用socket來介紹網路傳送來的資料時,要解決下面三個問題,也是完成visual c#使用socket來接收資料的三個步驟:

1.偵聽網路,接受網路連線申請;

2..獲得用以接收資料的socket例項,並以此例項接收遠端主機傳送來的資料;

3.根據遠端主機傳送來的控制碼,斷開網路連線,並清除資源。

此處接收接收資料,是上面介紹的【利用socket來傳送資料】傳送來的資料。

下面就是利用socket來接收資料的具體實現步驟:

1.啟動viisual studio .net,並新建乙個visual c#專案,專案名稱為【利用socket來接收資料】。

2.把visual studio .net的當前視窗切換到【form1.cs(設計)】視窗,並從【工具箱】中的【windows窗體元件】選項卡中往form1窗體中拖入下列元件,並執行相應操作:

乙個listbox元件,用以顯示接收的資料。

乙個stausbar元件,用以顯示接收端程式的執行狀況。

乙個button元件,名稱為button1,並在這個元件被拖入窗體後,雙擊它,則系統會在form1.cs檔案中自動產生其click事件對應的處理**。

3.【解決方案資源管理器】視窗中,雙擊form1.cs檔案,進入form1.cs檔案的編輯介面。

4.以下面**替代系統產生的initializecomponent過程::

private void initializecomponent ( )

) ;

this.formborderstyle = system.windows.forms.formborderstyle.fixedsingle ;

this.maximizebox = false ;

this.name = "form1" ;

this.text = "利用socket來接收資料" ;

this.resumelayout ( false ) ;

}至此【利用socket來接收資料】專案設計後的介面就完成了,具體如圖02所示:

圖02:【利用socket來接收資料】專案的設計介面

5.把visual studio .net的當前視窗切換到form1.cs的**編輯視窗,並在form1.cs檔案的開頭,用下列匯入命名空間**替代系統預設的匯入命名空間**。

using system ;

using system.drawing ;

using system.collections ;

using system.componentmodel ;

using system.windows.forms ;

using system.data ;

using system.net.sockets ;

//使用到tcplisten類

using system.net ;

using system.threading ;

//使用到執行緒

6.在form1.cs中的class**區中新增下列**,下列**的作用是定義全域性變數和建立全域性使用的例項:

int port = 8000 ;

//定義偵聽埠號

private thread ththreadread ;

//建立執行緒,用以偵聽埠號,接收資訊

private tcplistener tltcplisten ;

//偵聽埠號

private bool blistener = true ;

//設定標示位,判斷偵聽狀態

private socket stread ;

7.在form1.cs中的main函式之後,新增下列**,下列**的作用是定義過程「listen」,此過程的功能是監聽「8000」埠號,接收網路中連線請求,建立連線,並獲取接收資料時使用的socket例項,並以socket例項來接收客戶機程式傳送來的資料。並根據客戶機傳送來控制碼來斷開網路連線,釋放資源:

else

listbox1.items.add ( stime + " " + stemp ) ;

} catch ( system.security.securityexception ) }

8.用下列**替換form1.cs中的button1元件的click事件對應的處理**,下面**是以剛剛定義「listen」過程來初始化執行緒例項ththreadread,並啟動這個執行緒:

private void button1_click ( object sender , system.eventargs e )

至此,在儲存上述的所有修改步驟之後。乙個基於tcp協議的、利用socket接收端程式的就完成了。圖03和圖04分別是上述二個示例執行後的介面

圖03:【利用socket來傳送資料】的執行介面

圖04:【利用socket來接收資料】的執行介面

六.總結:

.net framework sdk中的socket類的功能是非常強大的,要十分詳細的介紹它,非一篇文章所能達到,本文所窺探的也只是其中的很小的一部分。但本文中介紹的二個示例在功能上雖不複雜,但在結構上卻非常典型,socket類的其他方面的應用在結構上大都也是如此。

在上面介紹的內容中,不僅介紹在visual c#實現埠偵聽、網路連線申請、資料傳送、資料接收的具體方法,還介紹了在使用visual c#實現網路功能是所必然要涉及到的如執行緒建立、執行緒銷毀、資源**和利用控制碼控制程式執行狀態等的實現方法。了解並掌握這些對我們編寫功能更強、結構更複雜的網路應用程式是非常有幫助的。

最後要和諸位朋友談一點小體會,就是在編寫網路應用程式時,要非常細心,對應用程式在執行的各個環節都要考慮到位,因為在網路中會出現很多意想不到的問題,就是網路狀態非常良好,也存在很多使用者方面的問題。如果在編寫的程式中缺乏對這些意外的處理,就可能會導致整個應用程式出錯,甚至崩潰。

Visual C 託管Socket的實現方法

socket就是套接字,它是網路程式設計中最常用遇到的概念和工具。在tcp ip網路中,傳送和接收資料就會經常使用到socket,由於使用socket能夠在網路上處理複雜資料,所以在各種網路應用程式中,涉及到資料傳送和接收,一般都會使用socket,可見要掌握網路程式設計,精通socket是非常重要...

Visual C 託管Socket的實現方法

socket就是套接字,它是網路程式設計中最常用遇到的概念和工具。在tcp ip網路中,傳送和接收資料就會經常使用到socket,由於使用socket能夠在網路上處理複雜資料,所以在各種網路應用程式中,涉及到資料傳送和接收,一般都會使用socket,可見要掌握網路程式設計,精通socket是非常重要...

C 中的託管和非託管

注意!先看左上角宣告!我不想誤人子弟!但我不怕思考。沒有思考就沒有錯誤,互相學習,共同進步!如果這句話是對的,應該是對的,那麼託管就好理解了,自己搜中間語言去 我們編寫的語言要通過中間語言來翻譯即所謂的託管給il 那麼非託管就是不用il即不用中間語言翻譯,別人 微軟把 已經把這個語句翻譯好了,說白了...