Socket.SendTo 方法

定義

傳送資料至特定的端點。

多載

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

從緩衝區中的指定位置開始且使用指定的 SocketFlags,傳送指定位元組數目的資料至指定的端點。

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

使用指定的 SocketFlags,傳送指定位元組數目的資料至指定的端點。

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

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

SendTo(ReadOnlySpan<Byte>, EndPoint)

傳送資料至指定的端點。

SendTo(Byte[], SocketFlags, EndPoint)

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

SendTo(Byte[], EndPoint)

傳送資料至指定的端點。

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

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

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

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

從緩衝區中的指定位置開始且使用指定的 SocketFlags,傳送指定位元組數目的資料至指定的端點。

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

參數

buffer
Byte[]

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

offset
Int32

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

size
Int32

要傳送的位元組數。

socketFlags
SocketFlags

SocketFlags 值的位元組合。

remoteEP
EndPoint

EndPoint,表示資料的目的位置。

傳回

已傳送的位元組數。

例外狀況

buffernull

-或-

remoteEPnull

offset 小於 0。

-或-

offset 大於 buffer 的長度。

-或-

size 小於 0。

-或-

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

socketFlags 不是有效的值組合。

-或-

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

呼叫堆疊中的呼叫端沒有所需的使用權限。

範例

下列程式碼範例會將無連接資料包傳送至指定的遠端主機。 位移、大小和 SocketFlags 會傳遞至 SendTo 方法。

static void SendTo4()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, 0, msg->Length, SocketFlags::None, endPoint );
   s->Close();
}
public static void SendTo4()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint);
    s.Close();
}
Public Shared Sub SendTo4() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint)
    s.Close()

End Sub

備註

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

如果您使用無連線通訊協定,則不需要先使用 方法來建立預設遠端主機, Connect 再呼叫 SendTo 。 如果您想要呼叫 Send 方法,則只需要執行此動作。 如果您在呼叫 SendTo 之前呼叫 Connect 方法,參數 remoteEP 只會覆寫該傳送作業的指定預設遠端主機。 您也不需要呼叫 Bind 方法,因為基礎服務提供者會指派最適當的區域網路位址和埠號碼。 如果您需要識別指派的區域網路位址和埠號碼,您可以在方法成功完成之後 SendTo 使用 LocalEndPoint 屬性。

雖然適用于無連線通訊協定, SendTo 但也適用于面向連線的通訊協定。 如果您使用連線導向通訊協定,您必須先呼叫 Connect 方法來建立遠端主機連線,或使用 方法來接受連入連線要求 Accept 。 如果您未建立或接受遠端主機連線, SendTo 將會擲回 SocketException 。 您也可以在呼叫 SendTo 方法之前,為無連線通訊協定建立預設遠端主機。 在上述任一情況下, SendTo 都會忽略 參數, remoteEP 並只將資料傳送至已連線或預設的遠端主機。

封鎖通訊端將會封鎖,直到傳送要求的位元組數目為止。 由於非封鎖 Socket 會立即完成,因此可能不會傳送單一作業中要求的所有位元組。 您的應用程式必須負責追蹤傳送的位元組數目,並重試作業,直到應用程式傳送要求的位元組數目為止。 也不保證您傳送的資料會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的輸出資料為止。 方法成功完成 SendTo 表示基礎系統有空間可緩衝處理網路傳送的資料。

如果您在封鎖模式中使用無連線通訊協定, SendTo 將會封鎖直到傳送資料包為止。 如果您想要將資料傳送至廣播位址,您必須先呼叫 方法, SetSocketOption 並將通訊端選項設定為 SocketOptionName.Broadcast 。 您也必須確定大小不會超過基礎服務提供者的封包大小上限。 如果這樣做,將不會傳送資料包,而且 SendTo 會擲回 SocketException

注意

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

注意

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

另請參閱

適用於

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

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

使用指定的 SocketFlags,傳送指定位元組數目的資料至指定的端點。

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

參數

buffer
Byte[]

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

size
Int32

要傳送的位元組數。

socketFlags
SocketFlags

SocketFlags 值的位元組合。

remoteEP
EndPoint

EndPoint,表示資料的目的位置。

傳回

已傳送的位元組數。

例外狀況

buffernull

-或-

remoteEPnull

指定的 size 超過 buffer 的大小。

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

範例

下列程式碼範例會將無連接資料包傳送至指定的遠端主機。 大小 和 SocketFlags 會傳遞至 SendTo 方法。

static void SendTo3()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, msg->Length, SocketFlags::None, endPoint );
   s->Close();
}
public static void SendTo3()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, msg.Length, SocketFlags.None, endPoint);
    s.Close();
}
Public Shared Sub SendTo3() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, msg.Length, SocketFlags.None, endPoint)
    s.Close()

End Sub

備註

在此多載中,緩衝區位移預設為 0。 如果您將 DontRoute 旗標指定為 socketflags 參數,將不會路由傳送您傳送的資料。

如果您使用無連線通訊協定,則不需要先使用 方法來建立預設遠端主機, Connect 再呼叫 SendTo 。 如果您想要呼叫 Send 方法,則只需要執行此動作。 如果您在呼叫 SendTo 之前呼叫 Connect 方法,參數 remoteEP 只會覆寫該傳送作業的指定預設遠端主機。 您也不需要呼叫 Bind 方法,因為基礎服務提供者會指派最適當的區域網路位址和埠號碼。 如果您需要識別指派的區域網路位址和埠號碼,您可以在方法成功完成之後 SendTo 使用 LocalEndPoint 屬性。

雖然適用于無連線通訊協定, SendTo 但也適用于面向連線的通訊協定。 如果您使用連線導向通訊協定,您必須先呼叫 Connect 方法來建立遠端主機連線,或使用 方法來接受連入連線要求 Accept 。 如果您未建立或接受遠端主機連線, SendTo 將會擲回 SocketException 。 您也可以在呼叫 SendTo 方法之前,為無連線通訊協定建立預設遠端主機。 在上述任一情況下, SendTo 都會忽略 參數, remoteEP 並只將資料傳送至已連線或預設的遠端主機。

封鎖通訊端將會封鎖,直到傳送要求的位元組數目為止。 由於非封鎖 Socket 會立即完成,因此可能不會傳送單一作業中要求的所有位元組。 您的應用程式必須負責追蹤傳送的位元組數目,並重試作業,直到應用程式傳送要求的位元組數目為止。 也不保證您傳送的資料會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的輸出資料為止。 方法成功完成 SendTo 表示基礎系統有空間可緩衝處理網路傳送的資料。

如果您在封鎖模式中使用無連線通訊協定, SendTo 將會封鎖直到傳送資料包為止。 如果您想要將資料傳送至廣播位址,您必須先呼叫 方法, SetSocketOption 並將通訊端選項設定為 SocketOptionName.Broadcast 。 您也必須確定傳送的位元組數目不會超過基礎服務提供者的封包大小上限。 如果這樣做,資料包將不會傳送,而且 SendTo 會擲回 SocketException

注意

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

注意

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

另請參閱

適用於

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

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

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

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

參數

buffer
ReadOnlySpan<Byte>

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

socketFlags
SocketFlags

傳送資料時將使用之值的位元組合 SocketFlags

socketAddress
SocketAddress

SocketAddress,表示資料的目的端。

傳回

已傳送的位元組數。

例外狀況

socketAddressnull

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

適用於

SendTo(ReadOnlySpan<Byte>, EndPoint)

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

傳送資料至指定的端點。

public:
 int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::EndPoint ^ remoteEP);
public int SendTo (ReadOnlySpan<byte> buffer, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), remoteEP As EndPoint) As Integer

參數

buffer
ReadOnlySpan<Byte>

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

remoteEP
EndPoint

EndPoint,表示資料的目的端。

傳回

已傳送的位元組數。

例外狀況

remoteEPnull

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

適用於

SendTo(Byte[], SocketFlags, EndPoint)

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

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

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

參數

buffer
Byte[]

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

socketFlags
SocketFlags

SocketFlags 值的位元組合。

remoteEP
EndPoint

EndPoint,表示資料的目的位置。

傳回

已傳送的位元組數。

例外狀況

buffernull

-或-

remoteEPnull

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

範例

下列程式碼範例會將無連接資料包傳送至指定的遠端主機。 SocketFlags 會傳遞至 SendTo 方法。

static void SendTo2()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, SocketFlags::None, endPoint );
   s->Close();
}
public static void SendTo2()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, SocketFlags.None, endPoint);
    s.Close();
}
Public Shared Sub SendTo2() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, SocketFlags.None, endPoint)
    s.Close()

End Sub

備註

在此多載中,緩衝區位移預設為 0,而要傳送的位元組數目會預設為 的大小 buffer 。 如果您將旗標指定 DontRoutesocketflags 參數,則不會路由傳送您傳送的資料。

如果您使用無連線通訊協定,則不需要先使用 Connect 方法建立預設遠端主機,再呼叫 SendTo 。 如果您想要呼叫 方法, Send 您只需要執行此動作。 如果您在呼叫 SendTo 之前呼叫 Connect 方法,參數 remoteEP 只會覆寫該傳送作業的指定預設遠端主機。 您也不需要呼叫 Bind 方法,因為基礎服務提供者會指派最適當的區域網路位址和埠號碼。 如果您需要識別指派的區域網路位址和埠號碼,您可以在 方法成功完成之後 SendTo 使用 LocalEndPoint 屬性。

雖然適用于無連線通訊協定, SendTo 但也適用于連線導向通訊協定。 如果您使用連線導向通訊協定,您必須先呼叫 Connect 方法或使用 Accept 方法來接受連入連線要求來建立遠端主機連線。 如果您未建立或接受遠端主機連線, SendTo 將會擲回 SocketException 。 您也可以在呼叫 SendTo 方法之前,先建立無連線通訊協定的預設遠端主機。 在這兩種情況下,都會忽略 remoteEP 參數, SendTo 並只將資料傳送至連線或預設的遠端主機。

封鎖通訊端會封鎖,直到傳送中要求的所有位元組 buffer 為止。 由於非封鎖 Socket 會立即完成,因此可能不會傳送 中的所有 buffer 位元組。 您的應用程式負責追蹤已傳送的位元組數目,並重試作業,直到應用程式傳送中的所有 buffer 位元組為止。 也不保證您傳送的資料會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的輸出資料為止。 方法成功完成 SendTo 表示基礎系統有空間可緩衝處理網路傳送的資料。

如果您在封鎖模式中使用無連線通訊協定,將會封鎖直到 SendTo 傳送資料包為止。 如果您想要將資料傳送至廣播位址,您必須先呼叫 SetSocketOption 方法,並將通訊端選項設定為 SocketOptionName.Broadcast 。 您也必須確定傳送的位元組數目不會超過基礎服務提供者的封包大小上限。 如果這樣做,資料包將不會傳送,而且 SendTo 會擲回 SocketException

注意

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

注意

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

另請參閱

適用於

SendTo(Byte[], EndPoint)

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

傳送資料至指定的端點。

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

參數

buffer
Byte[]

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

remoteEP
EndPoint

EndPoint,表示資料的目的端。

傳回

已傳送的位元組數。

例外狀況

buffernull

-或-

remoteEPnull

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

範例

下列程式碼範例會將無連接資料包傳送至指定的遠端主機。

static void SendTo1()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, endPoint );
   s->Close();
}
public static void SendTo1()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, endPoint);
    s.Close();
}
Public Shared Sub SendTo1() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, endPoint)
    s.Close()

End Sub

備註

在此多載中,緩衝區位移預設為 0、要傳送的位元組數目預設為 參數的大小 buffer ,而 SocketFlags 值預設值為 0。

如果您使用無連線通訊協定,則不需要先使用 Connect 方法建立預設遠端主機,再呼叫 SendTo 。 如果您想要呼叫 方法, Send 您只需要執行此動作。 如果您在呼叫 SendTo 之前呼叫 Connect 方法,參數 remoteEP 只會覆寫該傳送作業的指定預設遠端主機。 您也不需要呼叫 Bind 方法,因為基礎服務提供者會指派最適當的區域網路位址和埠號碼。 如果您需要識別指派的區域網路位址和埠號碼,您可以在 方法成功完成之後 SendTo 使用 LocalEndPoint 屬性。

雖然適用于無連線通訊協定, SendTo 但也適用于連線導向通訊協定。 如果您使用連線導向通訊協定,您必須先呼叫 Connect 方法或使用 Accept 方法來接受連入連線要求來建立遠端主機連線。 如果您未建立或接受遠端主機連線, SendTo 將會擲回 SocketException 。 您也可以在呼叫 SendTo 方法之前,先建立無連線通訊協定的預設遠端主機。 在這兩種情況下,都會忽略 remoteEP 參數, SendTo 並只將資料傳送至連線或預設的遠端主機。

封鎖通訊端會封鎖,直到傳送緩衝區中的所有位元組為止。 由於非封鎖 Socket 會立即完成,因此可能不會傳送 中的所有 buffer 位元組。 您的應用程式負責追蹤已傳送的位元組數目,並重試作業,直到應用程式傳送中的所有 buffer 位元組為止。 也不保證您傳送的資料會立即出現在網路上。 為了提升網路效率,基礎系統可能會延遲傳輸,直到收集大量的傳出資料為止。 方法成功完成 SendTo 表示基礎系統有空間可緩衝處理網路傳送的資料。

如果您在封鎖模式中使用無連線通訊協定,將會封鎖直到 SendTo 傳送資料包為止。 如果您想要將資料傳送至廣播位址,您必須先呼叫 SetSocketOption 方法,並將通訊端選項設定為 SocketOptionName.Broadcast 。 您也必須確定傳送的位元組數目不會超過基礎服務提供者的封包大小上限。 如果這樣做,資料包將不會傳送,而且 SendTo 會擲回 SocketException

注意

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

注意

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

另請參閱

適用於

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

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

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

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

參數

buffer
ReadOnlySpan<Byte>

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

socketFlags
SocketFlags

SocketFlags 值的位元組合。

remoteEP
EndPoint

EndPoint,表示資料的目的端。

傳回

已傳送的位元組數。

例外狀況

remoteEPnull

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

適用於