EndPoint 類編程
標識網絡地址。這是一個 abstract 類。瀏覽器
命名空間: System.Net
程序集: System(在 System.dll 中)緩存
[SerializableAttribute]
public abstract class EndPoint安全
備註網絡
EndPoint 類提供了一個表示網絡資源或服務的 abstract 基類。子類組合網絡鏈接信息以構成服務的鏈接點。異步
System.Object
System.Net.EndPoint
System.Net.IPEndPoint性能
Socket.Bind 方法操作系統
使 Socket與一個本地終結點相關聯。線程
命名空間: System.Net.Sockets
程序集: System(在 System.dll 中)對象
public void Bind(EndPoint localEP )
參數
localEP 爲 nullNothingnullptrnull 引用(在 Visual Basic 中爲 Nothing)。
試圖訪問套接字時發生錯誤。有關更多信息,請參見備註部分。
ObjectDisposedException
Socket已關閉。
SecurityException
調用堆棧上部的調用方無權執行所請求的操做。
若是須要使用特定的本地終結點,請使用 Bind 方法。必須先調用 Bind,而後才能調用 Listen方法。除非須要使用特定的本地終結點,不然沒必要在使用 Connect方法以前調用 Bind。對無鏈接和麪向鏈接的協議均可以使用 Bind 方法。
在調用 Bind 以前,必須首先建立打算從其進行數據通訊的本地 IPEndPoint。若是您不介意分配哪一個本地地址,則能夠用 IPAddress.Any做爲地址參數建立一個 IPEndPoint,這樣,基礎服務提供程序將會分配最適合的網絡地址。若是您有多個網絡接口,這將有助於簡化您的應用程序。若是您不介意使用哪一個本地端口,則能夠建立一個使用 0 做爲端口號的 IPEndPoint。在這種狀況下,服務提供程序將會分配一個可用的端口號(介於 1024 和 5000 之間)。
若是使用上面的方法,您能夠經過調用 LocalEndPoint獲知所分配的本地網絡地址和端口號。若是當前使用的是面向鏈接的協議,則直到您調用了 Connect或 EndConnect方法後,LocalEndPoint纔會返回本地分配的網絡地址。若是當前使用的是無鏈接協議,則直到完成一個發送或接收操做後,纔可訪問該信息。
注意:
若是打算接收多路廣播的數據報,則必須使用多路廣播端口號調用 Bind 方法。
注意:
若是打算經過使用 ReceiveFrom方法來接收無鏈接的數據報,則必須調用 Bind 方法。
注意:
若是在調用 Bind 方法時接收到 SocketException,則可使用 SocketException.ErrorCode屬性獲取特定的錯誤代碼。獲取此代碼後,您能夠參考 MSDN Library 中的 Windows Sockets 第 2 版 API 錯誤代碼文檔,獲取有關該錯誤的詳細說明。
注意:
當在應用程序中啓用網絡跟蹤功能後,此成員將輸出跟蹤信息。有關更多信息,請參見 網絡跟蹤。
Socket.Listen 方法
將 Socket置於偵聽狀態。
命名空間: System.Net.Sockets
程序集: System(在 System.dll 中)
掛起鏈接隊列的最大長度。
試圖訪問套接字時發生錯誤。有關更多信息,請參見備註部分。
ObjectDisposedException
Socket已關閉。
Listen 可讓一個面向鏈接的 Socket偵聽傳入的鏈接嘗試。backlog 參數指定隊列中最多可容納的等待接受的傳入鏈接數。若要肯定可指定的最大鏈接數,請檢索 MaxConnections值。Listen 不會阻止。
若是收到 SocketException,請使用 ErrorCode屬性獲取特定的錯誤代碼。獲取此代碼後,您能夠參考 MSDN Library 中的 Windows Sockets 第 2 版 API 錯誤代碼文檔,獲取有關該錯誤的詳細說明。可以使用 Accept或BeginAccept來接受來自隊列的鏈接。
注意:
在調用 Listen 以前,必須首先調用 Bind方法,不然 Listen 將引起 SocketException。
注意:
當在應用程序中啓用網絡跟蹤功能後,此成員將輸出跟蹤信息。有關更多信息,請參見 網絡跟蹤。
注意:
根據操做系統的不一樣,backlog 參數被限制爲不一樣的值。您能夠指定更大的值,但 backlog 將受操做系統的限制。
Socket.BeginAccept 方法
開始一個異步操做來接受一個傳入的鏈接嘗試。
BeginAccept(AsyncCallback, Object)
開始一個異步操做來接受一個傳入的鏈接嘗試。
BeginAccept(Int32, AsyncCallback, Object)
開始異步操做以接受傳入的鏈接嘗試並接收客戶端應用程序發送的第一個數據塊。
BeginAccept(Socket, Int32, AsyncCallback, Object)
開始異步操做以接受從指定套接字傳入的鏈接嘗試並接收客戶端應用程序發送的第一個數據塊。
命名空間: System.Net.Sockets
程序集: System(在 System.dll 中)
[HostProtectionAttribute(SecurityAction.LinkDemand, ExternalThreading = true)] public IAsyncResult BeginAccept( AsyncCallback callback, Object state )
AsyncCallback 委託。
一個對象,它包含此請求的狀態信息。
類型:System.IAsyncResult
一個 IAsyncResult,它引用異步 Socket建立。
ObjectDisposedException
Socket對象已關閉。
NotSupportedException
此方法須要 Windows NT。
InvalidOperationException
正在接受的套接字不會偵聽鏈接。在調用 BeginAccept以前必須調用 Bind和 Listen。
- 或 -
已接受的套接字是綁定的。
ArgumentOutOfRangeException
receiveSize 小於 0。
試圖訪問套接字時發生錯誤。有關更多信息,請參見備註部分。
注意:
應用到此 的 HostProtectionAttribute 屬性 (attribute) 具備如下 Resources 屬性 (property) 值:ExternalThreading。HostProtectionAttribute 不影響桌面應用程序(這些應用程序一般經過雙擊圖標、鍵入命令或在瀏覽器中輸入 URL 來啓動)。有關更多信息,請參見 HostProtectionAttribute 類或 SQL Server 編程和宿主保護屬性。
面向鏈接的協議可使用 BeginAccept方法來異步處理傳入的鏈接嘗試。以異步方式接受鏈接將使您可以在單獨的執行線程中發送和接收數據。在調用 BeginAccept方法以前,必須調用 Listen方法來偵聽傳入的鏈接請求,並將偵聽到的請求放入隊列中。
必須建立實現 AsyncCallback 委託的回調方法,並將其名稱傳遞給 BeginAccept方法。若要實現這一點,至少必須經過 state 參數將實施偵聽的 Socket對象傳遞給 BeginAccept。若是您的回調須要更多信息,則能夠建立一個小型類來保存 Socket和其餘必需的信息。經過 state 參數將此類的一個實例傳遞給 BeginAccept方法。
回調方法應調用 EndAccept方法。應用程序調用 BeginAccept時,系統會使用單獨的線程執行指定的回調方法,並在 EndAccept上一直處於阻止狀態,直到檢索到掛起的鏈接。EndAccept將會返回新的 Socket對象,供您用來向遠程主機發送數據和從遠程主機接收數據。不能使用返回的這個 Socket接受鏈接隊列中的任何附加鏈接。若是想要在調用 BeginAccept方法後使原始線程阻止,請使用 WaitHandle..::.WaitOne。當須要原始線程繼續執行時,請在回調方法中調用 ManualResetEvent 的 Set 方法。有關編寫回調方法的其餘信息,請參見 Callback 示例。
注意:
能夠調用返回的 Socket的 RemoteEndPoint方法來標識遠程主機的網絡地址和端口號。
注意:
若是收到 SocketException,請使用 SocketException..::.ErrorCode屬性獲取特定的錯誤代碼。獲取此代碼後,能夠參考 MSDN 中的 Windows Sockets 第 2 版 API 錯誤代碼文檔,獲取有關此錯誤的詳細說明。
注意:
當在應用程序中啓用網絡跟蹤功能後,此成員將輸出跟蹤信息。有關更多信息,請參見 網絡跟蹤。
注意:
執行上下文(安全上下文、模擬用戶及調用上下文)會被緩存,以用於 Socket異步方法。在首次使用一個特定上下文(特定 Socket異步方法、特定 Socket實例及特定回調)後,該上下文的後續使用將獲得性能改
Socket.EnableBroadcast 屬性
獲取或設置一個 Boolean 值,該值指定 Socket是否能夠發送或接收廣播數據包。
命名空間: System.Net.Sockets
程序集: System(在 System.dll 中)
public bool EnableBroadcast { get; set; }
類型:System.Boolean
若是 Socket容許廣播數據包,則爲 true;不然爲 false。默認爲 false。
此選項僅對數據報套接字有效。
ObjectDisposedException
Socket已關閉。
廣播僅限於特定子網,而且必須使用用戶數據報協議 (UDP)。對於 Internet 協議版本 4,可經過向 255.255.255.255 發送數據包來向本地子網廣播;也可使用定向廣播地址,即 Internet 協議 (IP) 地址的網絡部分,同時全部位都在主機部分設置。例如,若是 IP 地址是 192.168.1.40(C 類地址,網絡掩碼爲 255.255.255.0,網絡部分是前三個八進制數,主機部分是最後一個八進制數),則您的定向廣播地址是 192.168.1.255。
對傳輸控制協議 (TCP) 套接字設置此屬性不起任何做用。