Socket 類別

定義

實作 Berkeley 套接字介面。

public ref class Socket : IDisposable
public class Socket : IDisposable
type Socket = class
    interface IDisposable
Public Class Socket
Implements IDisposable
繼承
Socket
實作

範例

以下範例展示了如何利用該 Socket 類別將資料傳送到 HTTP 伺服器,並將 ASCII 回應印出標準輸出。 此範例會阻塞呼叫執行緒,直到整個頁面被接收完畢。

private static void SendHttpRequest(Uri? uri = null, int port = 80)
{
    uri ??= new Uri("http://example.com");

    // Construct a minimalistic HTTP/1.1 request
    byte[] requestBytes = Encoding.ASCII.GetBytes(@$"GET {uri.AbsoluteUri} HTTP/1.0
Host: {uri.Host}
Connection: Close

");

    // Create and connect a dual-stack socket
    using Socket socket = new Socket(SocketType.Stream, ProtocolType.Tcp);
    socket.Connect(uri.Host, port);

    // Send the request.
    // For the tiny amount of data in this example, the first call to Send() will likely deliver the buffer completely,
    // however this is not guaranteed to happen for larger real-life buffers.
    // The best practice is to iterate until all the data is sent.
    int bytesSent = 0;
    while (bytesSent < requestBytes.Length)
    {
        bytesSent += socket.Send(requestBytes, bytesSent, requestBytes.Length - bytesSent, SocketFlags.None);
    }

    // Do minimalistic buffering assuming ASCII response
    byte[] responseBytes = new byte[256];
    char[] responseChars = new char[256];

    while (true)
    {
        int bytesReceived = socket.Receive(responseBytes);

        // Receiving 0 bytes means EOF has been reached
        if (bytesReceived == 0) break;

        // Convert byteCount bytes to ASCII characters using the 'responseChars' buffer as destination
        int charCount = Encoding.ASCII.GetChars(responseBytes, 0, bytesReceived, responseChars, 0);

        // Print the contents of the 'responseChars' buffer to Console.Out
        Console.Out.Write(responseChars, 0, charCount);
    }
}

下一個範例展示了相同的 HTTP GET 情境,使用基於任務的非同步 API,同時將 a CancellationToken 轉發給非同步方法,使整個操作可取消。

Tip

Socket的非同步方法通常不回傳 CancellationToken a Task,該 a 分配於堆積中。 Cancellable 過載總是 ValueTask會回傳;使用它們有助於減少高效能程式碼中的配置。

private static async Task SendHttpRequestAsync(Uri? uri = null, int port = 80, CancellationToken cancellationToken = default)
{
    uri ??= new Uri("http://example.com");

    // Construct a minimalistic HTTP/1.1 request
    byte[] requestBytes = Encoding.ASCII.GetBytes(@$"GET {uri.AbsoluteUri} HTTP/1.1
Host: {uri.Host}
Connection: Close

");

    // Create and connect a dual-stack socket
    using Socket socket = new Socket(SocketType.Stream, ProtocolType.Tcp);
    await socket.ConnectAsync(uri.Host, port, cancellationToken);

    // Send the request.
    // For the tiny amount of data in this example, the first call to SendAsync() will likely deliver the buffer completely,
    // however this is not guaranteed to happen for larger real-life buffers.
    // The best practice is to iterate until all the data is sent.
    int bytesSent = 0;
    while (bytesSent < requestBytes.Length)
    {
        bytesSent += await socket.SendAsync(requestBytes.AsMemory(bytesSent), SocketFlags.None);
    }

    // Do minimalistic buffering assuming ASCII response
    byte[] responseBytes = new byte[256];
    char[] responseChars = new char[256];

    while (true)
    {
        int bytesReceived = await socket.ReceiveAsync(responseBytes, SocketFlags.None, cancellationToken);

        // Receiving 0 bytes means EOF has been reached
        if (bytesReceived == 0) break;

        // Convert byteCount bytes to ASCII characters using the 'responseChars' buffer as destination
        int charCount = Encoding.ASCII.GetChars(responseBytes, 0, bytesReceived, responseChars, 0);

        // Print the contents of the 'responseChars' buffer to Console.Out
        await Console.Out.WriteAsync(responseChars.AsMemory(0, charCount), cancellationToken);
    }
}

備註

欲了解更多關於此 API 的資訊,請參閱 Socket 的補充 API 備註

建構函式

名稱 Description
Socket(AddressFamily, SocketType, ProtocolType)

使用指定的位址族、套接字類型與協定初始化該類別的新 Socket 實例。

Socket(SafeSocketHandle)

初始化該類別的新實例 Socket ,以啟用指定的套接字句柄。

Socket(SocketInformation)

使用從 返回Socket的指定值初始化該類別的新DuplicateAndClose(Int32)實例。

Socket(SocketType, ProtocolType)

使用指定的套接字類型與協定初始化該類別的新 Socket 實例。 若作業系統支援 IPv6,此建構子會產生雙模式套接字;否則,它會建立一個 IPv4 插槽。

屬性

名稱 Description
AddressFamily

取得 的 Socket地址族。

Available

取得從網路接收並可讀取的資料量。

Blocking

取得或設定一個值,表示是否 Socket 處於阻擋模式。

Connected

會獲得一個值,表示 a Socket 是否在最後SendReceive一次操作時連接到遠端主機。

DontFragment

取得或設定一個值,指定是否 Socket 允許網際協定(IP)資料報碎片化。

DualMode

取得或設定一個值,指定 是否 Socket 同時用於 IPv4 和 IPv6 的雙模式套接字。

EnableBroadcast

取得或設定一個 Boolean 值,指定是否 Socket 能傳送廣播封包。

ExclusiveAddressUse

取得或設定一個值,指示是否 Socket 只允許一個程序綁定一個埠。

Handle

取得作業系統的 handle Socket

IsBound

會得到一個值,表示是否 Socket 綁定到特定的本地埠。

LingerState

取得或設定一個值,指定是否 Socket 會延遲關閉套接字以嘗試傳送所有待處理的資料。

LocalEndPoint

取得本地端點。

MulticastLoopback

取得或設定一個值,指定是否將發出的多播封包送達給發送端應用程式。

NoDelay

取得或設定一個 Boolean 值,指定串流 Socket 是否使用 Nagle 演算法。

OSSupportsIPv4

顯示底層作業系統及網路適配器是否支援網際網路協定第4版(IPv4)。

OSSupportsIPv6

顯示底層作業系統及網路轉接器是否支援網際網路協定第6版(IPv6)。

OSSupportsUnixDomainSockets

顯示底層作業系統是否支援 Unix 網域套接字。

ProtocolType

取得 的協定類型 Socket是 。

ReceiveBufferSize

取得或設定一個值,指定接收緩衝區 Socket的大小。

ReceiveTimeout

取得或設定一個值,指定 Receive 同步呼叫逾時的時間。

RemoteEndPoint

取得遠端端點。

SafeHandle

會得到 SafeSocketHandle 代表當前 Socket 物件封裝的套接字代柄的 。

SendBufferSize

取得或設定一個值,指定 的傳送緩衝區 Socket大小。

SendTimeout

取得或設定一個值,指定 Send 同步呼叫逾時的時間。

SocketType

取得 Socket的型別。

SupportsIPv4
已淘汰.
已淘汰.
已淘汰.

會顯示目前主機是否支援並啟用 IPv4 支援。

SupportsIPv6
已淘汰.
已淘汰.
已淘汰.

會獲得一個值,表示框架是否支援某些過時 Dns 成員的 IPv6。

Ttl

取得或設定一個值,指定由 .Socket

UseOnlyOverlappedIO
已淘汰.

取得或設定一個值,指定套接字是否只應使用重疊 I/O 模式。 在 .NET 5+(包括 .NET Core 版本)中,值總是 false

方法

名稱 Description
Accept()

為新建立的連結創造新的 Socket 連結。

AcceptAsync()

接受一個來電連線。

AcceptAsync(CancellationToken)

接受一個來電連線。

AcceptAsync(Socket, CancellationToken)

接受一個來電連線。

AcceptAsync(Socket)

接受一個來電連線。

AcceptAsync(SocketAsyncEventArgs)

開始非同步操作以接受來電連線嘗試。

BeginAccept(AsyncCallback, Object)

開始非同步操作以接受來電連線嘗試。

BeginAccept(Int32, AsyncCallback, Object)

開始非同步操作以接受輸入連線嘗試,並接收用戶端應用程式傳送的第一段資料區塊。

BeginAccept(Socket, Int32, AsyncCallback, Object)

開始非同步操作以接受來自指定套接字的連線嘗試,並接收用戶端應用程式傳送的第一段資料區塊。

BeginConnect(EndPoint, AsyncCallback, Object)

開始非同步請求遠端主機連線。

BeginConnect(IPAddress, Int32, AsyncCallback, Object)

開始非同步請求遠端主機連線。 主機由一個 IPAddress 和一個埠號來指定。

BeginConnect(IPAddress[], Int32, AsyncCallback, Object)

開始非同步請求遠端主機連線。 主機由 IPAddress 陣列和埠號指定。

BeginConnect(String, Int32, AsyncCallback, Object)

開始非同步請求遠端主機連線。 主機由主機名稱和埠號指定。

BeginDisconnect(Boolean, AsyncCallback, Object)

開始非同步請求,從遠端端點斷開連線。

BeginReceive(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

開始非同步接收來自連接 Socket的 。

BeginReceive(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

開始非同步接收來自連接 Socket的 。

BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

開始非同步接收來自連接 Socket的 。

BeginReceive(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

開始非同步接收來自連接 Socket的 。

BeginReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

開始非同步接收指定網路裝置的資料。

BeginReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

開始非同步接收指定數量的資料,並使用指定的 SocketFlags,並儲存端點與封包資訊。

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

非同步傳送資料至已連接 Socket的 。

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

非同步傳送資料至已連接 Socket的 。

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

非同步傳送資料至已連接 Socket的 。

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

非同步傳送資料至已連接 Socket的 。

BeginSendFile(String, AsyncCallback, Object)

使用 flag fileName 將檔案Socket傳送到連接UseDefaultWorkerThread的物件。

BeginSendFile(String, Byte[], Byte[], TransmitFileOptions, AsyncCallback, Object)

非同步地將檔案和緩衝資料傳送到連接的 Socket 物件。

BeginSendTo(Byte[], Int32, Int32, SocketFlags, EndPoint, AsyncCallback, Object)

非同步地將資料傳送到特定的遠端主機。

Bind(EndPoint)

將 a Socket 與本地端點關聯。

CancelConnectAsync(SocketAsyncEventArgs)

取消遠端主機連線的非同步請求。

Close()

關閉 Socket 連線並釋放所有相關資源。

Close(Int32)

關閉 Socket 連線並以指定逾時釋放所有相關資源,以便傳送排隊資料。

Connect(EndPoint)

建立與遠端主機的連線。

Connect(IPAddress, Int32)

建立與遠端主機的連線。 主機由 IP 位址和埠號指定。

Connect(IPAddress[], Int32)

建立與遠端主機的連線。 主機由一組 IP 位址陣列和一個埠號來指定。

Connect(String, Int32)

建立與遠端主機的連線。 主機由主機名稱和埠號指定。

ConnectAsync(EndPoint, CancellationToken)

建立與遠端主機的連線。

ConnectAsync(EndPoint)

建立與遠端主機的連線。

ConnectAsync(IPAddress, Int32, CancellationToken)

建立與遠端主機的連線。

ConnectAsync(IPAddress, Int32)

建立與遠端主機的連線。

ConnectAsync(IPAddress[], Int32, CancellationToken)

建立與遠端主機的連線。

ConnectAsync(IPAddress[], Int32)

建立與遠端主機的連線。

ConnectAsync(SocketAsyncEventArgs)

開始非同步請求連接遠端主機。

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs, ConnectAlgorithm)

實作 Berkeley 套接字介面。

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

開始非同步請求連接遠端主機。

ConnectAsync(String, Int32, CancellationToken)

建立與遠端主機的連線。

ConnectAsync(String, Int32)

建立與遠端主機的連線。

Disconnect(Boolean)

關閉插座連接,允許重複使用插座。

DisconnectAsync(Boolean, CancellationToken)

將連接的 socket 與遠端主機斷開。

DisconnectAsync(SocketAsyncEventArgs)

開始非同步請求,從遠端端點斷開連線。

Dispose()

釋放目前類別實例 Socket 所使用的所有資源。

Dispose(Boolean)

釋放 所使用的 Socket未管理資源,並可選擇性地處置這些受管理資源。

DuplicateAndClose(Int32)

複製目標程序的套接字參考,並關閉該程序的套接字。

EndAccept(Byte[], IAsyncResult)

非同步接受輸入連線嘗試,並建立一個新的 Socket 物件來處理遠端主機通訊。 此方法回傳一個緩衝區,內含初始傳輸資料。

EndAccept(Byte[], Int32, IAsyncResult)

非同步接受輸入連線嘗試,並建立一個新的 Socket 物件來處理遠端主機通訊。 此方法會回傳一個緩衝區,包含初始資料及傳輸的位元組數。

EndAccept(IAsyncResult)

非同步接受來電連線嘗試,並建立新的 Socket 連線來處理遠端主機通訊。

EndConnect(IAsyncResult)

結束一個待處理的非同步連線請求。

EndDisconnect(IAsyncResult)

結束一個待處理的非同步斷線請求。

EndReceive(IAsyncResult, SocketError)

結束一個待處理的非同步讀取。

EndReceive(IAsyncResult)

結束一個待處理的非同步讀取。

EndReceiveFrom(IAsyncResult, EndPoint)

結束來自特定端點的待處理非同步讀取。

EndReceiveMessageFrom(IAsyncResult, SocketFlags, EndPoint, IPPacketInformation)

結束來自特定端點的待處理非同步讀取。 此方法也揭示比 封包 EndReceiveFrom(IAsyncResult, EndPoint)更多的資訊。

EndSend(IAsyncResult, SocketError)

結束一個待處理的非同步傳送。

EndSend(IAsyncResult)

結束一個待處理的非同步傳送。

EndSendFile(IAsyncResult)

終止一個待處理的非同步檔案傳送。

EndSendTo(IAsyncResult)

終止一筆待處理的非同步傳送到特定地點。

Equals(Object)

判斷指定的物件是否等於目前的物件。

(繼承來源 Object)
Finalize()

釋放職業使用的 Socket 資源。

GetHashCode()

回傳一個實例的 Socket 雜湊值。

GetHashCode()

做為預設哈希函式。

(繼承來源 Object)
GetRawSocketOption(Int32, Int32, Span<Byte>)

利用平台特定的層級與名稱識別碼取得套接字選項值。

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

回傳指定的 Socket 選項設定,以位元組陣列表示。

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

回傳指定 Socket 選項的值,並以陣列形式呈現。

GetSocketOption(SocketOptionLevel, SocketOptionName)

回傳指定 Socket 選項的值,以物件表示。

GetType()

取得目前實例的 Type

(繼承來源 Object)
IOControl(Int32, Byte[], Byte[])

設定低階操作模式,使用 Socket 數控碼。

IOControl(IOControlCode, Byte[], Byte[])

設定低階操作模式,利用SocketIOControlCode列舉來指定控制碼。

Listen()

置於 Socket 聆聽狀態。

Listen(Int32)

置於 Socket 聆聽狀態。

MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
Poll(Int32, SelectMode)

決定 的 Socket狀態。

Poll(TimeSpan, SelectMode)

決定 的 Socket狀態。

Receive(Byte[], Int32, Int32, SocketFlags, SocketError)

從綁定 Socket 到接收緩衝區的資料,使用指定的 SocketFlags

Receive(Byte[], Int32, Int32, SocketFlags)

從指定 的接收緩衝Socket區偏移位置的綁定SocketFlags接收指定位元組,使用 。

Receive(Byte[], Int32, SocketFlags)

從綁定 Socket 到接收緩衝區的指定位元組數資料,使用指定的 SocketFlags

Receive(Byte[], SocketFlags)

從綁定 Socket 到接收緩衝區的資料,使用指定的 SocketFlags

Receive(Byte[])

從綁定 Socket 到接收緩衝區的資料。

Receive(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

從接收緩衝區清單的邊界 Socket 接收資料,使用指定的 SocketFlags

Receive(IList<ArraySegment<Byte>>, SocketFlags)

從接收緩衝區清單的邊界 Socket 接收資料,使用指定的 SocketFlags

Receive(IList<ArraySegment<Byte>>)

從接收緩衝區清單的界定 Socket 接收資料。

Receive(Span<Byte>, SocketFlags, SocketError)

從綁定 Socket 到接收緩衝區的資料,使用指定的 SocketFlags

Receive(Span<Byte>, SocketFlags)

從綁定 Socket 到接收緩衝區的資料,使用指定的 SocketFlags

Receive(Span<Byte>)

從綁定 Socket 到接收緩衝區的資料。

ReceiveAsync(ArraySegment<Byte>, SocketFlags)

從連接的插座接收資料。

ReceiveAsync(ArraySegment<Byte>)

從連接的插座接收資料。

ReceiveAsync(IList<ArraySegment<Byte>>, SocketFlags)

從連接的插座接收資料。

ReceiveAsync(IList<ArraySegment<Byte>>)

從連接的插座接收資料。

ReceiveAsync(Memory<Byte>, CancellationToken)

從連接的插座接收資料。

ReceiveAsync(Memory<Byte>, SocketFlags, CancellationToken)

從連接的插座接收資料。

ReceiveAsync(SocketAsyncEventArgs)

開始非同步請求,從連接 Socket 物件接收資料。

ReceiveFrom(Byte[], EndPoint)

接收資料報到資料緩衝區並儲存端點。

ReceiveFrom(Byte[], Int32, Int32, SocketFlags, EndPoint)

使用指定的 SocketFlags,接收指定數量的資料,並儲存端點。

ReceiveFrom(Byte[], Int32, SocketFlags, EndPoint)

使用指定的 SocketFlags,接收指定數量的資料緩衝區位元組,並儲存端點。

ReceiveFrom(Byte[], SocketFlags, EndPoint)

使用指定的 SocketFlags,接收資料報進入資料緩衝區,並儲存端點。

ReceiveFrom(Span<Byte>, EndPoint)

接收資料報到資料緩衝區並儲存端點。

ReceiveFrom(Span<Byte>, SocketFlags, EndPoint)

使用指定的 SocketFlags,接收資料報進入資料緩衝區,並儲存端點。

ReceiveFrom(Span<Byte>, SocketFlags, SocketAddress)

使用指定的 SocketFlags,接收資料報進入資料緩衝區,並儲存端點。

ReceiveFromAsync(ArraySegment<Byte>, EndPoint)

接收資料並回傳傳送主機的端點。

ReceiveFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

接收資料並回傳傳送主機的端點。

ReceiveFromAsync(Memory<Byte>, EndPoint, CancellationToken)

接收資料並回傳傳送主機的端點。

ReceiveFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)

接收資料並回傳傳送主機的端點。

ReceiveFromAsync(Memory<Byte>, SocketFlags, SocketAddress, CancellationToken)

使用指定的 SocketFlags,接收資料報進入資料緩衝區,並儲存端點。

ReceiveFromAsync(SocketAsyncEventArgs)

開始非同步接收指定網路裝置的資料。

ReceiveMessageFrom(Byte[], Int32, Int32, SocketFlags, EndPoint, IPPacketInformation)

使用指定的 SocketFlags,接收指定數量的資料,並儲存端點與封包資訊。

ReceiveMessageFrom(Span<Byte>, SocketFlags, EndPoint, IPPacketInformation)

使用指定的 socketFlags,接收指定數量的資料,並儲存端點與封包資訊。

ReceiveMessageFromAsync(ArraySegment<Byte>, EndPoint)

接收資料並回傳關於訊息發送者的額外資訊。

ReceiveMessageFromAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

接收資料並回傳關於訊息發送者的額外資訊。

ReceiveMessageFromAsync(Memory<Byte>, EndPoint, CancellationToken)

接收資料並回傳關於訊息發送者的額外資訊。

ReceiveMessageFromAsync(Memory<Byte>, SocketFlags, EndPoint, CancellationToken)

接收資料並回傳關於訊息發送者的額外資訊。

ReceiveMessageFromAsync(SocketAsyncEventArgs)

開始非同步接收指定數量的資料,並使用指定的 SocketFlags,儲存端點與封包資訊。

Select(IList, IList, IList, Int32)

決定一或多個套接字的狀態。

Select(IList, IList, IList, TimeSpan)

決定一或多個套接字的狀態。

Send(Byte[], Int32, Int32, SocketFlags, SocketError)

從指定的偏移量開始,將指定數量的資料傳送到連接 Socket的 ,並使用指定的 SocketFlags

Send(Byte[], Int32, Int32, SocketFlags)

從指定的偏移量開始,將指定數量的資料傳送到連接 Socket的 ,並使用指定的 SocketFlags

Send(Byte[], Int32, SocketFlags)

使用指定的 ,將指定數量的資料傳送至連接 Socket的 ,使用指定的 SocketFlags

Send(Byte[], SocketFlags)

使用指定的 Socket. 向連接SocketFlags者傳送資料。

Send(Byte[])

將資料傳送到已連接 Socket的 .

Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

將列表中的緩衝區集合傳送至連接 Socket的 ,使用指定的 SocketFlags

Send(IList<ArraySegment<Byte>>, SocketFlags)

將列表中的緩衝區集合傳送至連接 Socket的 ,使用指定的 SocketFlags

Send(IList<ArraySegment<Byte>>)

將列表中的緩衝區集合傳送到連接 Socket的 。

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

使用指定的 Socket. 向連接SocketFlags者傳送資料。

Send(ReadOnlySpan<Byte>, SocketFlags)

使用指定的 Socket. 向連接SocketFlags者傳送資料。

Send(ReadOnlySpan<Byte>)

將資料傳送到已連接 Socket的 .

SendAsync(ArraySegment<Byte>, SocketFlags)

在連接的通訊端上傳送資料。

SendAsync(ArraySegment<Byte>)

在連接的通訊端上傳送資料。

SendAsync(IList<ArraySegment<Byte>>, SocketFlags)

在連接的通訊端上傳送資料。

SendAsync(IList<ArraySegment<Byte>>)

在連接的通訊端上傳送資料。

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

在連接的通訊端上傳送資料。

SendAsync(ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

在連接的通訊端上傳送資料。

SendAsync(SocketAsyncEventArgs)

非同步地將資料傳送到連接 Socket 的物件。

SendFile(String, Byte[], Byte[], TransmitFileOptions)

將檔案fileName和資料緩衝區以指定的Socket值傳送給連接TransmitFileOptions的物件。

SendFile(String, ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, TransmitFileOptions)

將檔案fileName和資料緩衝區以指定的Socket值傳送給連接TransmitFileOptions的物件。

SendFile(String)

將檔案 fileName 傳送到 Socket 連接的物件,並帶有 UseDefaultWorkerThread 傳送標誌。

SendFileAsync(String, CancellationToken)

將檔案 fileName 傳送到連接 Socket 物件。

SendFileAsync(String, ReadOnlyMemory<Byte>, ReadOnlyMemory<Byte>, TransmitFileOptions, CancellationToken)

將檔案fileName和資料緩衝區以指定的Socket值傳送給連接TransmitFileOptions的物件。

SendPacketsAsync(SocketAsyncEventArgs)

非同步傳送一組檔案或記憶體資料緩衝區至連接 Socket 的物件。

SendTo(Byte[], EndPoint)

將資料傳送到指定的端點。

SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)

從緩衝 SocketFlags區指定位置開始,向指定端點傳送指定數量的資料。

SendTo(Byte[], Int32, SocketFlags, EndPoint)

使用指定的 SocketFlags

SendTo(Byte[], SocketFlags, EndPoint)

使用指定的 SocketFlags. 將資料傳送至特定端點。

SendTo(ReadOnlySpan<Byte>, EndPoint)

將資料傳送到指定的端點。

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

使用指定的 SocketFlags. 將資料傳送至特定端點。

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

使用指定的 SocketFlags. 將資料傳送至特定端點。

SendToAsync(ArraySegment<Byte>, EndPoint)

將資料傳送給指定的遠端主機。

SendToAsync(ArraySegment<Byte>, SocketFlags, EndPoint)

將資料傳送給指定的遠端主機。

SendToAsync(ReadOnlyMemory<Byte>, EndPoint, CancellationToken)

將資料傳送給指定的遠端主機。

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, EndPoint, CancellationToken)

將資料傳送給指定的遠端主機。

SendToAsync(ReadOnlyMemory<Byte>, SocketFlags, SocketAddress, CancellationToken)

使用指定的 SocketFlags. 將資料傳送至特定端點。

SendToAsync(SocketAsyncEventArgs)

非同步地將資料傳送到特定的遠端主機。

SetIPProtectionLevel(IPProtectionLevel)

設定套接字的 IP 保護等級。

SetRawSocketOption(Int32, Int32, ReadOnlySpan<Byte>)

利用平台特定的層級與名稱識別碼設定套接字選項值。

SetSocketOption(SocketOptionLevel, SocketOptionName, Boolean)

將指定的 Socket 選項設為指定的 Boolean 值。

SetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

將指定的 Socket 選項設為指定的值,表示為位元組陣列。

SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

將指定的 Socket 選項設為指定的整數值。

SetSocketOption(SocketOptionLevel, SocketOptionName, Object)

將指定的 Socket 選項設為指定的值,表示為一個物件。

Shutdown(SocketShutdown)

Socket.

ToString()

傳回表示目前 物件的字串。

(繼承來源 Object)

明確介面實作

名稱 Description
IDisposable.Dispose()

此 API 支援此產品基礎結構,但無法直接用於程式碼之中。

釋放 Socket所使用的所有資源。

擴充方法

名稱 Description
AcceptAsync(Socket, Socket)

執行非同步操作以接受對套接字的連線嘗試。

AcceptAsync(Socket)

執行非同步操作以接受對套接字的連線嘗試。

ConnectAsync(Socket, EndPoint, CancellationToken)

建立與遠端主機的連線。

ConnectAsync(Socket, EndPoint)

建立與遠端主機的連線。

ConnectAsync(Socket, IPAddress, Int32, CancellationToken)

建立與遠端主機的連線,該主機由 IP 位址與埠號指定。

ConnectAsync(Socket, IPAddress, Int32)

建立與遠端主機的連線。 主機由 IP 位址和埠號指定。

ConnectAsync(Socket, IPAddress[], Int32, CancellationToken)

建立與遠端主機的連線,該主機由一組 IP 位址陣列及埠號指定。

ConnectAsync(Socket, IPAddress[], Int32)

建立與遠端主機的連線。 主機由一組 IP 位址陣列和一個埠號來指定。

ConnectAsync(Socket, String, Int32, CancellationToken)

建立與遠端主機的連線,該主機由主機名稱和埠號指定。

ConnectAsync(Socket, String, Int32)

建立與遠端主機的連線。 主機由主機名稱和埠號指定。

ReceiveAsync(Socket, ArraySegment<Byte>, SocketFlags)

從連接的插座接收資料。

ReceiveAsync(Socket, IList<ArraySegment<Byte>>, SocketFlags)

從連接的插座接收資料。

ReceiveAsync(Socket, Memory<Byte>, SocketFlags, CancellationToken)

從連接的插座接收資料。

ReceiveFromAsync(Socket, ArraySegment<Byte>, SocketFlags, EndPoint)

從指定的網路裝置接收資料。

ReceiveMessageFromAsync(Socket, ArraySegment<Byte>, SocketFlags, EndPoint)

使用指定的 SocketFlags,接收指定數量的資料,並儲存端點與封包資訊。

SendAsync(Socket, ArraySegment<Byte>, SocketFlags)

將資料傳送到已連線的通訊端。

SendAsync(Socket, IList<ArraySegment<Byte>>, SocketFlags)

將資料傳送到已連線的通訊端。

SendAsync(Socket, ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

將資料傳送到已連線的通訊端。

SendToAsync(Socket, ArraySegment<Byte>, SocketFlags, EndPoint)

非同步地將資料傳送到特定的遠端主機。

適用於

執行緒安全性

同時 Socket 執行一個實例的發送與接收操作是安全的,但不建議同時發出多個發送或多個接收呼叫。 根據底層平台的實作,這可能導致大型或多緩衝區的發送或接收時出現非預期的資料交錯。

另請參閱