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,同時將轉送 CancellationToken 至異步方法,讓整個作業可取消。

提示

Socket不採用 CancellationToken 的異步方法通常會傳回 Task,其配置於堆積上。 可取消的多載一律 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 備註

建構函式

Socket(AddressFamily, SocketType, ProtocolType)

使用指定的通訊協定家族 (Family)、通訊端類型和通訊協定,初始化 Socket 類別的新執行個體。

Socket(SafeSocketHandle)

針對指定的通訊端控制代碼,將 Socket 類別的新執行個體初始化。

Socket(SocketInformation)

使用從 Socket 傳回的指定值,初始化 DuplicateAndClose(Int32) 類別的新執行個體。

Socket(SocketType, ProtocolType)

使用指定的通訊端類型和通訊協定,初始化 Socket 類別的新執行個體。 如果操作系統支援 IPv6,此建構函式會建立雙模式套接字;否則,它會建立 IPv4 套接字。

屬性

AddressFamily

取得 Socket 的通訊協定家族 (Family)。

Available

取得已從網路接收且可供讀取的資料量。

Blocking

取得或設定值,指出 Socket 是否處於區塊模式。

Connected

取得值,指出上一個 SocketSend 作業是否將 Receive 連接至遠端主機。

DontFragment

取得或設定值,此值指定 Socket 是否允許將網際網路通訊協定 (IP) 資料包分割為片段。

DualMode

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

EnableBroadcast

取得或設定值 Boolean ,指定 是否可以 Socket 傳送廣播封包。

ExclusiveAddressUse

取得或設定 Boolean 值,指定 Socket 是否只允許一個處理序繫結至通訊埠。

Handle

取得 Socket 的作業系統處理。

IsBound

取得值,指出 Socket 是否繫結至特定的本機通訊埠。

LingerState

取得或設定值,指定 Socket 是否會延遲關閉通訊端,以嘗試傳送所有暫止資料。

LocalEndPoint

取得本機端點。

MulticastLoopback

取得或設定值,指定輸出多點傳送封包是否會傳遞至傳送應用程式。

NoDelay

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

OSSupportsIPv4

指出基礎作業系統和網路配置器是否支援網際網路通訊協定第 4 版 (IPv4)。

OSSupportsIPv6

指出基礎作業系統和網路配置器是否支援網際網路通訊協定第 6 版 (IPv6)。

OSSupportsUnixDomainSockets

指出底層作業系統是否支援 Unix 網域通訊端。

ProtocolType

取得 Socket 的通訊協定 (Protocol) 類型。

ReceiveBufferSize

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

ReceiveTimeout

取得或設定值,指定同步 Receive 呼叫逾時之前的時間長度。

RemoteEndPoint

取得遠端端點。

SafeHandle

取得 SafeSocketHandle,表示目前 Socket 物件所封裝的通訊端控制代碼。

SendBufferSize

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

SendTimeout

取得或設定值,指定同步 Send 呼叫逾時之前的時間長度。

SocketType

取得 Socket 的類型。

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

取得值,指出 IPv4 支援是否可用並在目前的主機上啟用。

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

取得值,指出「架構」是否對某些已過時 Dns 成員支援 IPv6。

Ttl

取得或設定值,指定 Socket 傳送之網際網路通訊協定 (IP) 封包的存留時間 (TTL) 值。

UseOnlyOverlappedIO
已淘汰.

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

方法

Accept()

建立新建立連接的新 Socket

AcceptAsync()

接受連入連線。

AcceptAsync(CancellationToken)

接受連入連線。

AcceptAsync(Socket)

接受連入連線。

AcceptAsync(Socket, CancellationToken)

接受連入連線。

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)

使用 Socket 旗標,將檔案 fileName 傳送至已連接的 UseDefaultWorkerThread 物件。

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

將檔案和資料緩衝區以非同步方式傳送至已連接的 Socket 物件。

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

以非同步方式將資料傳送至特定的遠端主機。

Bind(EndPoint)

使 Socket 與本機端點建立關聯。

CancelConnectAsync(SocketAsyncEventArgs)

取消遠端主機連接的非同步要求。

Close()

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

Close(Int32)

關閉 Socket 連線,並釋放所有具指定逾時的關聯資源,以允許傳送佇列的資料。

Connect(EndPoint)

建立與遠端主機的連線。

Connect(IPAddress, Int32)

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

Connect(IPAddress[], Int32)

建立與遠端主機的連線。 主機是由 IP 位址陣列和連接埠號碼所指定。

Connect(String, Int32)

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

ConnectAsync(EndPoint)

建立與遠端主機的連線。

ConnectAsync(EndPoint, CancellationToken)

建立與遠端主機的連線。

ConnectAsync(IPAddress, Int32)

建立與遠端主機的連線。

ConnectAsync(IPAddress, Int32, CancellationToken)

建立與遠端主機的連線。

ConnectAsync(IPAddress[], Int32)

建立與遠端主機的連線。

ConnectAsync(IPAddress[], Int32, CancellationToken)

建立與遠端主機的連線。

ConnectAsync(SocketAsyncEventArgs)

開始與遠端主機連接的非同步要求。

ConnectAsync(SocketType, ProtocolType, SocketAsyncEventArgs)

開始與遠端主機連接的非同步要求。

ConnectAsync(String, Int32)

建立與遠端主機的連線。

ConnectAsync(String, Int32, CancellationToken)

建立與遠端主機的連線。

Disconnect(Boolean)

關閉通訊端連線並允許重複使用通訊端。

DisconnectAsync(Boolean, CancellationToken)

中斷與遠端主機連線的套接字。

DisconnectAsync(SocketAsyncEventArgs)

開始非同步要求,以中斷遠端端點的連接。

Dispose()

釋放 Socket 類別目前的執行個體所使用的全部資源。

Dispose(Boolean)

釋放 Socket 所使用的 Unmanaged 資源,並選擇性處置 Managed 資源。

DuplicateAndClose(Int32)

複製目標處理序的通訊端參考,並關閉這個處理序的通訊端。

EndAccept(Byte[], IAsyncResult)

以非同步方式接受連入連線嘗試,並建立新的 Socket 物件,以處理遠端主機通訊。 這個方法會傳回包含已傳輸之初始資料的緩衝區。

EndAccept(Byte[], Int32, IAsyncResult)

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

EndAccept(IAsyncResult)

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

EndConnect(IAsyncResult)

結束擱置的非同步連接要求。

EndDisconnect(IAsyncResult)

結束暫止非同步中斷連接要求。

EndReceive(IAsyncResult)

結束擱置的非同步讀取。

EndReceive(IAsyncResult, SocketError)

結束擱置的非同步讀取。

EndReceiveFrom(IAsyncResult, EndPoint)

從指定的端點結束暫止的非同步讀取。

EndReceiveMessageFrom(IAsyncResult, SocketFlags, EndPoint, IPPacketInformation)

從指定的端點結束暫止的非同步讀取。 這個方法還會比 EndReceiveFrom(IAsyncResult, EndPoint) 提供更多的封包資訊。

EndSend(IAsyncResult)

結束暫止的非同步傳送。

EndSend(IAsyncResult, SocketError)

結束暫止的非同步傳送。

EndSendFile(IAsyncResult)

結束檔案的暫止非同步傳送。

EndSendTo(IAsyncResult)

結束暫止的非同步傳送至指定的位置。

Equals(Object)

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

(繼承來源 Object)
Finalize()

釋放 Socket 類別所使用的資源。

GetHashCode()

傳回 Socket 執行個體的雜湊值。

GetHashCode()

做為預設雜湊函式。

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

使用特定於平台的層級和名稱識別碼來取得通訊端選項值。

GetSocketOption(SocketOptionLevel, SocketOptionName)

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

GetSocketOption(SocketOptionLevel, SocketOptionName, Byte[])

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

GetSocketOption(SocketOptionLevel, SocketOptionName, Int32)

以陣列傳回指定 Socket 選項的值。

GetType()

取得目前執行個體的 Type

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

使用數值控制碼,設定 Socket 的低階作業模式。

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

使用 Socket 列舉型別指定控制碼,以設定 IOControlCode 的低階作業模式。

Listen()

Socket 置於接聽狀態。

Listen(Int32)

Socket 置於接聽狀態。

MemberwiseClone()

建立目前 Object 的淺層複製。

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

決定 Socket 的狀態。

Poll(TimeSpan, SelectMode)

決定 Socket 的狀態。

Receive(Byte[])

從已繫結的 Socket 接收資料至接收緩衝區中。

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

使用指定的 Socket,從已繫結的 SocketFlags 將指定的位元組數接收到接收緩衝區的指定位移位置。

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

使用指定的 Socket,從已繫結的 SocketFlags 接收資料至接收緩衝區中。

Receive(Byte[], Int32, SocketFlags)

使用指定的 Socket,從已繫結的 SocketFlags 將指定位元組數的資料接收至接收緩衝區中。

Receive(Byte[], SocketFlags)

使用指定的 Socket,從已繫結的 SocketFlags 接收資料至接收緩衝區中。

Receive(IList<ArraySegment<Byte>>)

從已繫結的 Socket 接收資料至接收緩衝區清單中。

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

使用指定的 Socket,從已繫結的 SocketFlags 接收資料至接收緩衝區清單中。

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

使用指定的 Socket,從已繫結的 SocketFlags 接收資料至接收緩衝區清單中。

Receive(Span<Byte>)

從已繫結的 Socket 接收資料至接收緩衝區中。

Receive(Span<Byte>, SocketFlags)

使用指定的 Socket,從已繫結的 SocketFlags 接收資料至接收緩衝區中。

Receive(Span<Byte>, SocketFlags, SocketError)

使用指定的 Socket,從已繫結的 SocketFlags 接收資料至接收緩衝區中。

ReceiveAsync(ArraySegment<Byte>)

從已連線的通訊端擷取資料。

ReceiveAsync(ArraySegment<Byte>, SocketFlags)

從已連線的通訊端擷取資料。

ReceiveAsync(IList<ArraySegment<Byte>>)

從已連線的通訊端擷取資料。

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

從已連線的通訊端擷取資料。

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[])

傳送資料至已連接的 Socket

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

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

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

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

Send(Byte[], Int32, SocketFlags)

使用指定的 Socket,傳送指定的資料位元組數至已連接的 SocketFlags

Send(Byte[], SocketFlags)

使用指定的 Socket,傳送資料至已連接的 SocketFlags

Send(IList<ArraySegment<Byte>>)

將清單中的緩衝區集合傳送至連接的 Socket

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

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

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

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

Send(ReadOnlySpan<Byte>)

傳送資料至已連接的 Socket

Send(ReadOnlySpan<Byte>, SocketFlags)

使用指定的 Socket,傳送資料至已連接的 SocketFlags

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

使用指定的 Socket,傳送資料至已連接的 SocketFlags

SendAsync(ArraySegment<Byte>)

在連接的套接字上傳送數據。

SendAsync(ArraySegment<Byte>, SocketFlags)

在連接的套接字上傳送數據。

SendAsync(IList<ArraySegment<Byte>>)

在連接的套接字上傳送數據。

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

在連接的套接字上傳送數據。

SendAsync(ReadOnlyMemory<Byte>, CancellationToken)

在連接的套接字上傳送數據。

SendAsync(ReadOnlyMemory<Byte>, SocketFlags, CancellationToken)

在連接的套接字上傳送數據。

SendAsync(SocketAsyncEventArgs)

將資料以非同步方式傳送至已連接的 Socket 物件。

SendFile(String)

使用 Socket 傳輸旗標,將檔案 fileName 傳送至已連接的 UseDefaultWorkerThread 物件。

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

使用指定的 TransmitFileOptions 值,將檔案 fileName 和資料緩衝區傳送到連接的 Socket 物件。

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

使用指定的 TransmitFileOptions 值,將檔案 fileName 和資料緩衝區傳送到連接的 Socket 物件。

SendFileAsync(String, CancellationToken)

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

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

使用指定的 TransmitFileOptions 值,將檔案 fileName 和資料緩衝區傳送到連接的 Socket 物件。

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)

明確介面實作

IDisposable.Dispose()

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

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

擴充方法

AcceptAsync(Socket)

執行非同步作業,以接受通訊端上的連入連線嘗試。

AcceptAsync(Socket, Socket)

執行非同步作業,以接受通訊端上的連入連線嘗試。

ConnectAsync(Socket, EndPoint)

建立與遠端主機的連線。

ConnectAsync(Socket, EndPoint, CancellationToken)

建立與遠端主機的連線。

ConnectAsync(Socket, IPAddress, Int32)

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

ConnectAsync(Socket, IPAddress, Int32, CancellationToken)

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

ConnectAsync(Socket, IPAddress[], Int32)

建立與遠端主機的連線。 主機是由 IP 位址陣列和連接埠號碼所指定。

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

建立由 IP 位址陣列和連接埠號碼所指定的遠端主機連線。

ConnectAsync(Socket, String, Int32)

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

ConnectAsync(Socket, String, Int32, CancellationToken)

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

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 同時執行傳送和接收作業是安全的,但不建議同時發出多個傳送或多個接收呼叫。 視基礎平台實作而定,這可能會導致大型或多緩衝區傳送或接收的非預期數據交錯。

另請參閱