Socket.Send 方法

定義

傳送資料至已連接的 Socket

多載

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

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

Send(ReadOnlySpan<Byte>)

傳送資料至已連接的 Socket

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

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

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

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

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

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

Send(Byte[], Int32, SocketFlags)

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

Send(IList<ArraySegment<Byte>>)

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

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

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

Send(Byte[], SocketFlags)

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

Send(ReadOnlySpan<Byte>, SocketFlags)

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

Send(Byte[])

傳送資料至已連接的 Socket

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

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

public:
 int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

參數

buffer
ReadOnlySpan<Byte>

位元組範圍,包含要傳送的資料。

socketFlags
SocketFlags

指定傳送與接收行為的列舉值位元組合。

errorCode
SocketError

當此方法傳回時,包含定義通訊端錯誤碼的其中一個列舉值。

傳回

已傳送到 Socket 的位元組數。

例外狀況

嘗試存取通訊端時發生錯誤。

備註

Send以同步方式將數據傳送至 或 Accept 方法中指定的Connect遠端主機,並傳回成功傳送的位元組數目。 Send 可用於連線導向和無連線通訊協定。

此多載需要緩衝區,其中包含您想要傳送的數據。 值 SocketFlags 預設為0、緩衝區位移預設為0,以及要傳送的位元元組數目預設為緩衝區大小。

如果您使用無連線通訊協定,您必須先呼叫 Connect ,才能呼叫此方法,否則 Send 會擲回 SocketException。 如果您使用連線導向通訊協定,則必須使用 Connect 來建立遠端主機連線,或使用 Accept 來接受連入連線。

如果您使用無連線通訊協定,並打算將數據傳送至數個不同的主機,您應該使用 SendTo 方法。 如果您沒有使用 SendTo 方法,則必須在每次呼叫 之前呼叫 ConnectSend。 即使在使用 建立預設遠端主機Connect之後,您仍可使用 SendTo 。 您也可以先變更預設遠端主機,再呼叫 Send 另一個 呼叫 Connect

如果您使用連線導向通訊協定, Send 將會封鎖直到傳送緩衝區中的所有位元元組為止,除非使用 Socket.SendTimeout設定逾時。 如果超過逾時值, Send 呼叫將會擲回 SocketException。 在非封鎖模式中,即使它傳送的位元元組數目小於緩衝區中的位元元數目, Send 也可能順利完成。 您的應用程式必須負責追蹤傳送的位元組數目,並重試作業,直到應用程式在緩衝區中傳送位元組為止。 也不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的傳出數據為止。 方法成功完成 Send 表示基礎系統有空間可緩衝處理網路傳送的數據。

注意

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

重要

成功完成傳送並不表示已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字處於非封鎖模式,否則傳送將會封鎖。

另請參閱

適用於

Send(ReadOnlySpan<Byte>)

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

傳送資料至已連接的 Socket

public:
 int Send(ReadOnlySpan<System::Byte> buffer);
public int Send (ReadOnlySpan<byte> buffer);
member this.Send : ReadOnlySpan<byte> -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte)) As Integer

參數

buffer
ReadOnlySpan<Byte>

位元組範圍,包含要傳送的資料。

傳回

已傳送到 Socket 的位元組數。

例外狀況

嘗試存取通訊端時發生錯誤。

備註

Send以同步方式將數據傳送至 或 Accept 方法中指定的Connect遠端主機,並傳回成功傳送的位元組數目。 Send 可用於連線導向和無連線通訊協定。

此多載需要緩衝區,其中包含您想要傳送的數據。 值 SocketFlags 預設為0、緩衝區位移預設為0,以及要傳送的位元元組數目預設為緩衝區大小。

如果您使用無連線通訊協定,您必須先呼叫 Connect ,才能呼叫此方法,否則 Send 會擲回 SocketException。 如果您使用連線導向通訊協定,則必須使用 Connect 來建立遠端主機連線,或使用 Accept 來接受連入連線。

如果您使用無連線通訊協定,並打算將數據傳送至數個不同的主機,您應該使用 SendTo 方法。 如果您沒有使用 SendTo 方法,則必須在每次呼叫 之前呼叫 ConnectSend。 即使您已使用 Connect建立預設遠端主機,也可以使用 SendTo 。 您也可以先變更預設遠端主機,再呼叫 Send 另一個 呼叫 Connect

如果您使用連線導向通訊協定, Send 將會封鎖直到傳送緩衝區中的所有位元元組為止,除非使用 Socket.SendTimeout設定逾時。 如果超過逾時值, Send 呼叫將會擲回 SocketException。 在非封鎖模式中,即使它傳送的位元元組數目小於緩衝區中的位元元數目, Send 也可能順利完成。 您的應用程式必須負責追蹤傳送的位元組數目,並重試作業,直到應用程式在緩衝區中傳送位元組為止。 也不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的傳出數據為止。 方法成功完成 Send 表示基礎系統有空間可緩衝處理網路傳送的數據。

注意

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

重要

成功完成傳送並不表示已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字處於非封鎖模式,否則傳送將會封鎖。

另請參閱

適用於

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

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

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

public:
 int Send(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

參數

buffer
Byte[]

類型 Byte 的陣列,其中包含要傳送的資料。

offset
Int32

資料緩衝區中要開始傳送資料的位置。

size
Int32

要傳送的位元組數。

socketFlags
SocketFlags

SocketFlags 值的位元組合。

errorCode
SocketError

SocketError 物件,儲存通訊端錯誤。

傳回

已傳送到 Socket 的位元組數。

例外狀況

buffernull

offset 小於 0。

-或-

offset 大於 buffer 的長度。

-或-

size 小於 0。

-或-

size 大於 buffer 的長度減去 offset 參數的值。

socketFlags 不是有效的值組合。

-或-

在存取 Socket 時發生作業系統錯誤。

範例

下列程式代碼範例會指定資料緩衝區、位移、大小,以及 SocketFlags 將資料傳送至連接的 Socket

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

備註

Send以同步方式將數據傳送至 或 Accept 方法中指定的Connect遠端主機,並傳回成功傳送的位元組數目。 Send 可用於連線導向和無連線通訊協定。

在此多載中,如果您將 DontRoute 旗標指定為 socketflags 參數,您傳送的數據將不會路由傳送。

如果您使用無連線通訊協定,您必須先呼叫 Connect ,才能呼叫這個方法,否則 Send 會擲回 SocketException。 如果您使用連線導向通訊協定,則必須使用 Connect 來建立遠端主機連線,或使用 Accept 來接受連入連線。

如果您使用無連線通訊協定,並計劃將資料傳送至數個不同的主機,您應該使用 SendTo。 如果您不使用 SendTo,則必須在每次呼叫 之前呼叫 ConnectSendSendTo即使您已使用 建立預設遠端主機Connect,也可以使用 。 您也可以在呼叫 Send 之前變更預設遠端主機,方法是對 進行另一個呼叫 Connect

您也必須確定大小不會超過基礎服務提供者的封包大小上限。 如果這樣做,將不會傳送數據報,而且 Send 會擲回 SocketException

如果您使用連接導向通訊協定, Send 將會封鎖直到傳送要求的位元元組數目為止,除非使用 Socket.SendTimeout設定逾時。 如果超過逾時值, Send 呼叫將會擲回 SocketException。 在非封鎖模式中,即使它傳送的位元元組數目小於您要求的位元元組數目, Send 也可能順利完成。 您的應用程式必須負責追蹤傳送的位元組數目,並重試作業,直到應用程式傳送要求的位元組數目為止。 也不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的傳出數據為止。 方法成功完成 Send 表示基礎系統有空間可緩衝處理網路傳送的數據。

注意

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

注意

成功完成傳送並不表示已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字處於非封鎖模式,否則傳送將會封鎖。

注意

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

另請參閱

適用於

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

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

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

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

參數

buffers
IList<ArraySegment<Byte>>

ArraySegment<T> 型別的 Byte 清單,其中包含要傳送的資料。

socketFlags
SocketFlags

SocketFlags 值的位元組合。

errorCode
SocketError

SocketError 物件,儲存通訊端錯誤。

傳回

已傳送到 Socket 的位元組數。

例外狀況

buffersnull

buffers 是空的。

嘗試存取通訊端時發生錯誤。

備註

此多載至少需要一個緩衝區,其中包含您想要傳送的數據。 值 SocketFlags 預設值為 0。 如果您將 DontRoute 旗標指定為 socketFlags 參數,將不會路由傳送您傳送的數據。

如果您使用無連線通訊協定,則必須在呼叫此方法之前呼叫 Connect ,否則 Send 會擲回 SocketException。 如果您使用連線導向通訊協定,則必須使用 Connect 來建立遠端主機連線,或使用 Accept 來接受連入連線。

如果您使用無連線通訊協定,並計劃將數據傳送至數個不同的主機,您應該使用 SendTo 方法。 如果您未使用 SendTo 方法,則必須在每次呼叫 之前呼叫 ConnectSend。 即使您已使用 Connect建立預設遠端主機,也可以使用 SendTo 。 您也可以在呼叫 Send 之前變更預設遠端主機,方法是對 進行另一個呼叫 Connect

如果您使用連接導向通訊協定, Send 將會封鎖直到傳送緩衝區中的所有位元元組為止,除非使用 Socket.SendTimeout設定逾時。 如果超過逾時值, Send 呼叫將會擲回 SocketException。 在非封鎖模式中,即使它傳送的位元元組數目小於緩衝區中的位元元數目, Send 也可能順利完成。 您的應用程式必須負責追蹤傳送的位元組數目,並重試作業,直到應用程式在緩衝區中傳送位元組為止。 也不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的傳出數據為止。 方法成功完成 Send 表示基礎系統有空間可緩衝處理網路傳送的數據。

注意

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

注意

成功完成傳送並不表示已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字處於非封鎖模式,否則傳送將會封鎖。

注意

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

適用於

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

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

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

public:
 int Send(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * int * int * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags) As Integer

參數

buffer
Byte[]

類型 Byte 的陣列,其中包含要傳送的資料。

offset
Int32

資料緩衝區中要開始傳送資料的位置。

size
Int32

要傳送的位元組數。

socketFlags
SocketFlags

SocketFlags 值的位元組合。

傳回

已傳送到 Socket 的位元組數。

例外狀況

buffernull

offset 小於 0。

-或-

offset 大於 buffer 的長度。

-或-

size 小於 0。

-或-

size 大於 buffer 的長度減去 offset 參數的值。

socketFlags 不是有效的值組合。

-或-

在存取 Socket 時發生作業系統錯誤。

範例

下列程式代碼範例會指定資料緩衝區、位移、大小,以及 SocketFlags 將資料傳送至連接的 Socket

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
int SendReceiveTest4( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      
      // Blocks until send returns.
      int byteCount = server->Send( msg, 0, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, 0, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine(  "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

備註

Send以同步方式將數據傳送至 或 Accept 方法中指定的Connect遠端主機,並傳回成功傳送的位元組數目。 Send 可用於連線導向和無連線通訊協定。

在此多載中,如果您將 DontRoute 旗標指定為 socketflags 參數,您傳送的數據將不會路由傳送。

如果您使用無連線通訊協定,您必須先呼叫 Connect ,才能呼叫這個方法,否則 Send 會擲回 SocketException。 如果您使用連線導向通訊協定,則必須使用 Connect 來建立遠端主機連線,或使用 Accept 來接受連入連線。

如果您使用無連線通訊協定,並計劃將資料傳送至數個不同的主機,您應該使用 SendTo。 如果您不使用 SendTo,則必須在每次呼叫 之前呼叫 ConnectSendSendTo即使您已使用 建立預設遠端主機Connect,也可以使用 。 您也可以在呼叫 Send 之前變更預設遠端主機,方法是對 進行另一個呼叫 Connect

您也必須確定大小不會超過基礎服務提供者的封包大小上限。 如果這樣做,將不會傳送數據報,而且 Send 會擲回 SocketException

如果您使用連接導向通訊協定, Send 將會封鎖直到傳送要求的位元元組數目為止,除非使用 Socket.SendTimeout設定逾時。 如果超過逾時值, Send 呼叫將會擲回 SocketException。 在非封鎖模式中,即使它傳送的位元元組數目小於您要求的位元元組數目, Send 也可能順利完成。 您的應用程式必須負責追蹤傳送的位元組數目,並重試作業,直到應用程式傳送要求的位元組數目為止。 也不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的傳出數據為止。 方法成功完成 Send 表示基礎系統有空間可緩衝處理網路傳送的數據。

注意

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

注意

成功完成傳送並不表示已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字處於非封鎖模式,否則傳送將會封鎖。

注意

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

另請參閱

適用於

Send(Byte[], Int32, SocketFlags)

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

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

public:
 int Send(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * int * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), size As Integer, socketFlags As SocketFlags) As Integer

參數

buffer
Byte[]

類型 Byte 的陣列,其中包含要傳送的資料。

size
Int32

要傳送的位元組數。

socketFlags
SocketFlags

SocketFlags 值的位元組合。

傳回

已傳送到 Socket 的位元組數。

例外狀況

buffernull

size 小於 0 或超過緩衝區的大小。

socketFlags 不是有效的值組合。

-或-

存取通訊端時發生作業系統錯誤。

範例

下列程式代碼範例會傳送緩衝區中找到的數據,並針對 SocketFlags指定 None

// Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
int SendReceiveTest3( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int i = server->Send( msg, msg->Length, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", i.ToString() );
      
      // Get reply from the server.
      int byteCount = server->Receive( bytes, server->Available,
         SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
public static int SendReceiveTest3(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int i = server.Send(msg, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", i);

        // Get reply from the server.
        int byteCount = server.Receive(bytes, bytes.Length, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, message size, and socket flags.
Public Shared Function SendReceiveTest3(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        Dim byteCount As Integer = server.Receive(bytes, server.Available, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest3

備註

Send以同步方式將數據傳送至 或 Accept 方法中建立的Connect遠端主機,並傳回成功傳送的位元組數目。 Send 可用於連線導向和無連線通訊協定。

此多載需要緩衝區,其中包含您想要傳送的數據、您要傳送的位元元組數目,以及任何 SocketFlags的位元組組合。 如果您將 DontRoute 旗標指定為 socketflags 參數,則不會路由傳送您傳送的數據。

如果您使用無連線通訊協定,您必須先呼叫 Connect ,才能呼叫此方法,否則 Send 會擲回 SocketException。 如果您使用連線導向通訊協定,則必須使用 Connect 來建立遠端主機連線,或使用 Accept 來接受連入連線。

如果您使用無連線通訊協定,並打算將數據傳送至數個不同的主機,您應該使用 SendTo 方法。 如果您未使用 SendTo 方法,則必須在每次呼叫 方法之前先呼叫 ConnectSend 方法。 即使在使用 建立預設遠端主機Connect之後,您仍可使用 SendTo 。 您也可以先變更預設遠端主機,再呼叫 Send 另一個 呼叫 Connect

使用連線導向通訊協定時, Send 除非使用 Socket.SendTimeout設定逾時,否則會封鎖直到傳送要求的位元組數目為止。 如果超過逾時值, Send 呼叫將會擲回 SocketException。 在非封鎖模式中,即使它傳送的位元元組數目小於您要求的位元元組數目, Send 也可能順利完成。 您的應用程式必須負責追蹤傳送的位元組數目,並重試作業,直到應用程式傳送要求的位元組數目為止。 也不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的傳出數據為止。 方法成功完成 Send 表示基礎系統有空間可緩衝處理網路傳送的數據。

注意

您必須確定大小不會超過基礎服務提供者的封包大小上限。 如果這樣做,將不會傳送數據報,而且 Send 會擲回 SocketException。 如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

重要

成功完成傳送並不表示已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字處於非封鎖模式,否則傳送將會封鎖。

另請參閱

適用於

Send(IList<ArraySegment<Byte>>)

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

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

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte))) As Integer

參數

buffers
IList<ArraySegment<Byte>>

ArraySegment<T> 型別的 Byte 清單,其中包含要傳送的資料。

傳回

已傳送到 Socket 的位元組數。

例外狀況

buffersnull

buffers 是空的。

嘗試存取通訊端時發生錯誤。 請參閱以下註解章節。

備註

Send 可用於連線導向和無連線通訊協定。

此多載至少需要一個緩衝區,其中包含您想要傳送的數據。

如果您使用無連線通訊協定,則必須在呼叫此方法之前呼叫 Connect ,否則 Send 會擲回 SocketException。 如果您使用連線導向通訊協定,則必須使用 Connect 來建立遠端主機連線,或使用 Accept 來接受連入連線。

如果您使用無連線通訊協定,並計劃將數據傳送至數個不同的主機,您應該使用 SendTo 方法。 如果您未使用 SendTo 方法,則必須在每次呼叫 之前呼叫 ConnectSend。 即使您已使用 Connect建立預設遠端主機,也可以使用 SendTo 。 您也可以在呼叫 Send 之前變更預設遠端主機,方法是對 進行另一個呼叫 Connect

如果您使用連接導向通訊協定, Send 將會封鎖直到傳送緩衝區中的所有位元元組為止,除非使用 Socket.SendTimeout設定逾時。 如果超過逾時值, Send 呼叫將會擲回 SocketException。 在非封鎖模式中,即使它傳送的位元元組數目小於緩衝區中的位元元數目, Send 也可能順利完成。 您的應用程式必須負責追蹤傳送的位元組數目,並重試作業,直到應用程式在緩衝區中傳送位元組為止。 也不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的傳出數據為止。 方法成功完成 Send 表示基礎系統有空間可緩衝處理網路傳送的數據。

注意

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

注意

成功完成傳送並不表示已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字處於非封鎖模式,否則傳送將會封鎖。

注意

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

適用於

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

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

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

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public int Send (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Integer

參數

buffers
IList<ArraySegment<Byte>>

ArraySegment<T> 型別的 Byte 清單,其中包含要傳送的資料。

socketFlags
SocketFlags

SocketFlags 值的位元組合。

傳回

已傳送到 Socket 的位元組數。

例外狀況

buffersnull

buffers 是空的。

嘗試存取通訊端時發生錯誤。

備註

此多載至少需要一個緩衝區,其中包含您想要傳送的數據。 值 SocketFlags 預設值為 0。 如果您將 DontRoute 旗標指定為 socketFlags 參數,將不會路由傳送您傳送的數據。

如果您使用無連線通訊協定,則必須在呼叫此方法之前呼叫 Connect ,否則 Send 會擲回 SocketException。 如果您使用連線導向通訊協定,則必須使用 Connect 來建立遠端主機連線,或使用 Accept 來接受連入連線。

如果您使用無連線通訊協定,並計劃將數據傳送至數個不同的主機,您應該使用 SendTo 方法。 如果您未使用 SendTo 方法,則必須在每次呼叫 之前呼叫 ConnectSend。 即使您已使用 Connect建立預設遠端主機,也可以使用 SendTo 。 您也可以在呼叫 Send 之前變更預設遠端主機,方法是對 進行另一個呼叫 Connect

如果您使用連接導向通訊協定, Send 將會封鎖直到傳送緩衝區中的所有位元元組為止,除非使用 Socket.SendTimeout設定逾時。 如果超過逾時值, Send 呼叫將會擲回 SocketException。 在非封鎖模式中,即使它傳送的位元元組數目小於緩衝區中的位元元數目, Send 也可能順利完成。 您的應用程式必須負責追蹤傳送的位元組數目,並重試作業,直到應用程式在緩衝區中傳送位元組為止。 也不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的傳出數據為止。 方法成功完成 Send 表示基礎系統有空間可緩衝處理網路傳送的數據。

注意

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

注意

成功完成傳送並不表示已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字處於非封鎖模式,否則傳送將會封鎖。

注意

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

適用於

Send(Byte[], SocketFlags)

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

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

public:
 int Send(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Send (byte[] buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), socketFlags As SocketFlags) As Integer

參數

buffer
Byte[]

類型 Byte 的陣列,其中包含要傳送的資料。

socketFlags
SocketFlags

SocketFlags 值的位元組合。

傳回

已傳送到 Socket 的位元組數。

例外狀況

buffernull

嘗試存取通訊端時發生錯誤。

範例

下列程式代碼範例示範如何在連接的 Socket上傳送數據。

// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
int SendReceiveTest2( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg, SocketFlags::None );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes, SocketFlags::None );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return (e->ErrorCode);
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer and socket flags.
Public Shared Function SendReceiveTest2(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest2

備註

Send以同步方式將數據傳送至 或 Accept 方法中建立的Connect遠端主機,並傳回成功傳送的位元組數目。 方法 Send 可用於連接導向和無連線通訊協定。

此多載需要緩衝區,其中包含您想要傳送的數據,以及的位元組合 SocketFlags。 緩衝區位移預設為0,而要傳送的位元元組數目預設為緩衝區的大小。 如果您將 DontRoute 旗標指定為 socketflags 參數值,則不會路由傳送您傳送的數據。

如果您使用無連線通訊協定,則必須在呼叫此方法之前呼叫 Connect ,否則 Send 會擲回 SocketException。 如果您使用連線導向通訊協定,則必須使用 Connect 來建立遠端主機連線,或使用 Accept 來接受連入連線。

如果您使用無連線通訊協定,並計劃將數據傳送至數個不同的主機,您應該使用 SendTo 方法。 如果您不使用 SendTo 方法,則必須在每次呼叫 Send之前呼叫 Connect 方法。 即使您已使用 Connect建立預設遠端主機,也可以使用 SendTo 。 您也可以在呼叫 Send 之前變更預設遠端主機,方法是對 進行另一個呼叫 Connect

如果您使用連接導向通訊協定, Send 將會封鎖直到傳送緩衝區中的所有位元元組為止,除非使用 Socket.SendTimeout設定逾時。 如果超過逾時值, Send 呼叫將會擲回 SocketException。 在非封鎖模式中,即使它傳送的位元元組數目小於緩衝區中的位元元數目, Send 也可能順利完成。 您的應用程式必須負責追蹤傳送的位元組數目,並重試作業,直到應用程式傳送要求的位元組數目為止。 也不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的傳出數據為止。 方法成功完成 Send 表示基礎系統有空間可緩衝處理網路傳送的數據。

注意

您必須確定緩衝區的大小不會超過基礎服務提供者的封包大小上限。 如果這樣做,將不會傳送數據報,而且 Send 會擲回 SocketException。 如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

注意

成功完成傳送並不表示已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字處於非封鎖模式,否則傳送將會封鎖。

注意

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

另請參閱

適用於

Send(ReadOnlySpan<Byte>, SocketFlags)

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

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

public:
 int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags);
public int Send (ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags) As Integer

參數

buffer
ReadOnlySpan<Byte>

位元組範圍,包含要傳送的資料。

socketFlags
SocketFlags

指定傳送與接收行為的列舉值位元組合。

傳回

已傳送到 Socket 的位元組數。

例外狀況

嘗試存取通訊端時發生錯誤。

另請參閱

適用於

Send(Byte[])

來源:
Socket.cs
來源:
Socket.cs
來源:
Socket.cs

傳送資料至已連接的 Socket

public:
 int Send(cli::array <System::Byte> ^ buffer);
public int Send (byte[] buffer);
member this.Send : byte[] -> int
Public Function Send (buffer As Byte()) As Integer

參數

buffer
Byte[]

類型 Byte 的陣列,其中包含要傳送的資料。

傳回

已傳送到 Socket 的位元組數。

例外狀況

buffernull

嘗試存取通訊端時發生錯誤。

範例

下列程式代碼範例示範如何在連接的 Socket上傳送數據。

// Displays sending with a connected socket
// using the overload that takes a buffer.
int SendReceiveTest1( Socket^ server )
{
   array<Byte>^ msg = Encoding::UTF8->GetBytes( "This is a test" );
   array<Byte>^ bytes = gcnew array<Byte>(256);
   try
   {
      // Blocks until send returns.
      int byteCount = server->Send( msg );
      Console::WriteLine( "Sent {0} bytes.", byteCount.ToString() );
      
      // Get reply from the server.
      byteCount = server->Receive( bytes );
      if ( byteCount > 0 )
      {
         Console::WriteLine( Encoding::UTF8->GetString( bytes ) );
      }
   }
   catch ( SocketException^ e ) 
   {
      Console::WriteLine( "{0} Error code: {1}.", e->Message, e->ErrorCode.ToString() );
      return ( e->ErrorCode );
   }
   return 0;
}
// Displays sending with a connected socket
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int i = server.Send(msg);
        Console.WriteLine("Sent {0} bytes.", i);

        // Get reply from the server.
        i = server.Receive(bytes);
        Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer.
Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        i = server.Receive(bytes)
        Console.WriteLine(Encoding.UTF8.GetString(bytes))
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest1

備註

Send以同步方式將數據傳送至 或 Accept 方法中指定的Connect遠端主機,並傳回成功傳送的位元組數目。 Send 可用於連線導向和無連線通訊協定。

此多載需要緩衝區,其中包含您想要傳送的數據。 值 SocketFlags 預設為0、緩衝區位移預設為0,以及要傳送的位元元組數目預設為緩衝區大小。

如果您使用無連線通訊協定,則必須在呼叫此方法之前呼叫 Connect ,否則 Send 會擲回 SocketException。 如果您使用連線導向通訊協定,則必須使用 Connect 來建立遠端主機連線,或使用 Accept 來接受連入連線。

如果您使用無連線通訊協定,並計劃將數據傳送至數個不同的主機,您應該使用 SendTo 方法。 如果您未使用 SendTo 方法,則必須在每次呼叫 之前呼叫 ConnectSend。 即使您已使用 Connect建立預設遠端主機,也可以使用 SendTo 。 您也可以在呼叫 Send 之前變更預設遠端主機,方法是對 進行另一個呼叫 Connect

如果您使用連接導向通訊協定, Send 將會封鎖直到傳送緩衝區中的所有位元元組為止,除非使用 Socket.SendTimeout設定逾時。 如果超過逾時值, Send 呼叫將會擲回 SocketException。 在非封鎖模式中,即使它傳送的位元元組數目小於緩衝區中的位元元數目, Send 也可能順利完成。 您的應用程式必須負責追蹤傳送的位元組數目,並重試作業,直到應用程式在緩衝區中傳送位元組為止。 也不保證您傳送的數據會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的傳出數據為止。 方法成功完成 Send 表示基礎系統有空間可緩衝處理網路傳送的數據。

注意

如果您收到 SocketException,請使用 SocketException.ErrorCode 屬性來取得特定的錯誤碼。 取得此程式代碼之後,請參閱 Windows Sockets 第 2 版 API 錯誤碼 檔,以取得錯誤的詳細描述。

注意

成功完成傳送並不表示已成功傳遞數據。 如果傳輸系統內沒有可用的緩衝區空間來保存要傳輸的數據,除非套接字處於非封鎖模式,否則傳送將會封鎖。

注意

在應用程式中啟用網路追蹤時,這個成員會輸出追蹤資訊。 如需詳細資訊,請參閱 .NET Framework 中的網路追蹤

另請參閱

適用於