Socket.SendTo Methode

Definition

Sendet Daten an einen bestimmten Endpunkt.

Überlädt

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

Sendet die angegebene Anzahl von Datenbytes an den angegebenen Endpunkt und beginnt dabei an der angegebenen Position im Puffer, wobei die angegebenen SocketFlags verwendet werden.

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

Sendet die angegebene Anzahl von Datenbytes an den angegebenen Endpunkt, wobei die angegebenen SocketFlags verwendet werden.

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

Sendet Daten an einen bestimmten Endpunkt unter Verwendung der angegebenen SocketFlags.

SendTo(ReadOnlySpan<Byte>, EndPoint)

Sendet Daten an den angegebenen Endpunkt.

SendTo(Byte[], SocketFlags, EndPoint)

Sendet Daten an einen bestimmten Endpunkt unter Verwendung der angegebenen SocketFlags.

SendTo(Byte[], EndPoint)

Sendet Daten an den angegebenen Endpunkt.

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

Sendet Daten an einen bestimmten Endpunkt unter Verwendung der angegebenen SocketFlags.

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

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Sendet die angegebene Anzahl von Datenbytes an den angegebenen Endpunkt und beginnt dabei an der angegebenen Position im Puffer, wobei die angegebenen SocketFlags verwendet werden.

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

Parameter

buffer
Byte[]

Ein Array vom Typ Byte, das die zu sendenden Daten enthält.

offset
Int32

Die Position im Datenpuffer, an der mit dem Senden von Daten begonnen werden soll.

size
Int32

Die Anzahl von Bytes, die gesendet werden sollen.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

remoteEP
EndPoint

Der EndPoint, der den Zielort der Daten darstellt.

Gibt zurück

Die Anzahl der gesendeten Bytes.

Ausnahmen

buffer ist null.

- oder -

remoteEP ist null.

offset ist kleiner als 0.

- oder -

offset ist größer als die Länge von buffer.

- oder -

size ist kleiner als 0.

- oder -

size ist größer als die Länge von buffer minus dem Wert des offset-Parameters.

socketFlags ist keine gültige Kombination von Werten.

- oder -

Beim Zugriff auf den Socket tritt ein Betriebssystemfehler auf.

Der Socket wurde geschlossen.

Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.

Beispiele

Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remotehost gesendet. Der Offset, die Größe und SocketFlags werden an die SendTo -Methode übergeben.

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

Hinweise

Wenn Sie in dieser Überladung das DontRoute Flag als socketflags Parameter angeben, werden die gesendeten Daten nicht weitergeleitet.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie keinen Standard-Remotehost mit der Connect -Methode einrichten, bevor Sie aufrufen SendTo. Sie müssen dies nur tun, wenn Sie die Send -Methode aufrufen möchten. Wenn Sie die Connect -Methode vor dem Aufrufen SendToaufrufen, überschreibt der remoteEP Parameter den angegebenen Standard-Remotehost nur für diesen Sendevorgang. Sie müssen die Bind Methode auch nicht aufrufen, da der zugrunde liegende Dienstanbieter die am besten geeignete lokale Netzwerkadresse und Portnummer zuweisen wird. Wenn Sie die zugewiesene lokale Netzwerkadresse und Portnummer identifizieren müssen, können Sie die LocalEndPoint -Eigenschaft verwenden, nachdem die SendTo Methode erfolgreich abgeschlossen wurde.

Obwohl für verbindungslose Protokolle vorgesehen, SendTo funktioniert es auch mit verbindungsorientierten Protokollen. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie zunächst eine Remotehostverbindung herstellen, indem Sie die Connect -Methode aufrufen oder eine eingehende Verbindungsanforderung mit der Accept -Methode akzeptieren. Wenn Sie keine Remotehostverbindung herstellen oder akzeptieren, SendTo löst ein aus SocketException. Sie können auch einen Standard-Remotehost für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo Methode aufrufen. Ignoriert in beiden Fällen den remoteEP Parameter und SendTo sendet nur Daten an den verbundenen oder standardfernen Host.

Blockierende Sockets werden blockiert, bis die angeforderte Anzahl von Bytes gesendet wird. Da eine nicht blockierende Socket Datei sofort abgeschlossen wird, werden möglicherweise nicht alle angeforderten Bytes in einem einzelnen Vorgang gesendet. Es liegt in Ihrer Verantwortung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die angeforderte Anzahl von Bytes sendet. Es gibt auch keine Garantie, dass die von Ihnen gesendeten Daten sofort im Netzwerk angezeigt werden. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine erhebliche Menge auslaufende Daten gesammelt wird. Ein erfolgreicher Abschluss der SendTo Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für ein Netzwerk sendet.

Wenn Sie ein verbindungsloses Protokoll im Blockierungsmodus verwenden, wird blockiert, SendTo bis das Datagramm gesendet wird. Wenn Sie Daten an eine Broadcastadresse senden möchten, müssen Sie zuerst die SetSocketOption -Methode aufrufen und die Socketoption auf SocketOptionName.Broadcastfestlegen. Außerdem müssen Sie sicherstellen, dass die Größe die maximale Paketgröße des zugrunde liegenden Dienstanbieters nicht überschreitet. Wenn dies der Fall ist, wird das Datagramm nicht gesendet und SendTo löst einen aus SocketException.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie eine ausführliche Beschreibung des Fehlers in der Dokumentation zur Windows Sockets-API, Version 2 .

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Weitere Informationen

Gilt für:

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

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Sendet die angegebene Anzahl von Datenbytes an den angegebenen Endpunkt, wobei die angegebenen SocketFlags verwendet werden.

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

Parameter

buffer
Byte[]

Ein Array vom Typ Byte, das die zu sendenden Daten enthält.

size
Int32

Die Anzahl von Bytes, die gesendet werden sollen.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

remoteEP
EndPoint

Der EndPoint, der den Zielort der Daten darstellt.

Gibt zurück

Die Anzahl der gesendeten Bytes.

Ausnahmen

buffer ist null.

- oder -

remoteEP ist null.

Die angegebene size ist größer als buffer.

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Beispiele

Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remotehost gesendet. Die Größe und SocketFlags werden an die SendTo -Methode übergeben.

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

Hinweise

In dieser Überladung ist der Pufferoffset standardmäßig auf 0 festgelegt. Wenn Sie das DontRoute Flag als socketflags Parameter angeben, werden die gesendeten Daten nicht weitergeleitet.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie keinen Standard-Remotehost mit der Connect -Methode einrichten, bevor Sie aufrufen SendTo. Sie müssen dies nur tun, wenn Sie die Send -Methode aufrufen möchten. Wenn Sie die Connect -Methode vor dem Aufrufen SendToaufrufen, überschreibt der remoteEP Parameter den angegebenen Standard-Remotehost nur für diesen Sendevorgang. Sie müssen die Bind Methode auch nicht aufrufen, da der zugrunde liegende Dienstanbieter die am besten geeignete lokale Netzwerkadresse und Portnummer zuweisen wird. Wenn Sie die zugewiesene lokale Netzwerkadresse und Portnummer identifizieren müssen, können Sie die LocalEndPoint -Eigenschaft verwenden, nachdem die SendTo Methode erfolgreich abgeschlossen wurde.

Obwohl für verbindungslose Protokolle vorgesehen, SendTo funktioniert es auch mit verbindungsorientierten Protokollen. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie zunächst eine Remotehostverbindung herstellen, indem Sie die Connect -Methode aufrufen oder eine eingehende Verbindungsanforderung mit der Accept -Methode akzeptieren. Wenn Sie keine Remotehostverbindung herstellen oder akzeptieren, SendTo löst ein aus SocketException. Sie können auch einen Standard-Remotehost für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo Methode aufrufen. Ignoriert in beiden Fällen den remoteEP Parameter und SendTo sendet nur Daten an den verbundenen oder standardfernen Host.

Blockierende Sockets werden blockiert, bis die angeforderte Anzahl von Bytes gesendet wird. Da eine Nichtblockierung Socket sofort abgeschlossen wird, werden möglicherweise nicht alle angeforderten Bytes in einem einzelnen Vorgang gesendet. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die angeforderte Anzahl von Bytes sendet. Es gibt auch keine Garantie, dass die von Ihnen gesendeten Daten sofort im Netzwerk angezeigt werden. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine erhebliche Menge auslaufende Daten gesammelt wird. Ein erfolgreicher Abschluss der SendTo Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für ein Netzwerk sendet.

Wenn Sie ein verbindungsloses Protokoll im Blockierungsmodus verwenden, wird blockiert, SendTo bis das Datagramm gesendet wird. Wenn Sie Daten an eine Broadcastadresse senden möchten, müssen Sie zuerst die SetSocketOption -Methode aufrufen und die Socketoption auf SocketOptionName.Broadcastfestlegen. Außerdem müssen Sie sicherstellen, dass die Anzahl der gesendeten Bytes die maximale Paketgröße des zugrunde liegenden Dienstanbieters nicht überschreitet. Wenn dies der Fall ist, wird das Datagramm nicht gesendet und SendTo löst einen aus SocketException.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie eine ausführliche Beschreibung des Fehlers in der Dokumentation zur Windows Sockets-API, Version 2 .

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Weitere Informationen

Gilt für:

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

Quelle:
Socket.cs
Quelle:
Socket.cs

Sendet Daten an einen bestimmten Endpunkt unter Verwendung der angegebenen 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

Parameter

buffer
ReadOnlySpan<Byte>

Eins Spanne von Bytes, die die zu sendenden Daten enthält.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags Werte, die beim Senden der Daten verwendet werden.

socketAddress
SocketAddress

Der SocketAddress, der das Ziel der Daten darstellt.

Gibt zurück

Die Anzahl der gesendeten Bytes.

Ausnahmen

socketAddress ist null.

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Gilt für:

SendTo(ReadOnlySpan<Byte>, EndPoint)

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Sendet Daten an den angegebenen Endpunkt.

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

Parameter

buffer
ReadOnlySpan<Byte>

Eins Spanne von Bytes, die die zu sendenden Daten enthält.

remoteEP
EndPoint

Der EndPoint, der das Ziel der Daten darstellt.

Gibt zurück

Die Anzahl der gesendeten Bytes.

Ausnahmen

remoteEP ist null.

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Gilt für:

SendTo(Byte[], SocketFlags, EndPoint)

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Sendet Daten an einen bestimmten Endpunkt unter Verwendung der angegebenen 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

Parameter

buffer
Byte[]

Ein Array vom Typ Byte, das die zu sendenden Daten enthält.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

remoteEP
EndPoint

Der EndPoint, der den Zielort der Daten darstellt.

Gibt zurück

Die Anzahl der gesendeten Bytes.

Ausnahmen

buffer ist null.

- oder -

remoteEP ist null.

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Beispiele

Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remotehost gesendet. SocketFlags werden an die SendTo -Methode übergeben.

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

Hinweise

In dieser Überladung wird der Pufferoffset standardmäßig auf 0 festgelegt, und die Anzahl der Bytes zum Senden von Standardwerten auf die Größe von buffer. Wenn Sie das DontRoute Flag als socketflags Parameter angeben, werden die gesendeten Daten nicht weitergeleitet.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie keinen Standard-Remotehost mit der Connect -Methode einrichten, bevor Sie aufrufen SendTo. Sie müssen dies nur tun, wenn Sie die Send -Methode aufrufen möchten. Wenn Sie die Connect -Methode vor dem Aufrufen SendToaufrufen, überschreibt der remoteEP Parameter den angegebenen Standard-Remotehost nur für diesen Sendevorgang. Sie müssen die Bind Methode auch nicht aufrufen, da der zugrunde liegende Dienstanbieter die am besten geeignete lokale Netzwerkadresse und Portnummer zuweisen wird. Wenn Sie die zugewiesene lokale Netzwerkadresse und Portnummer identifizieren müssen, können Sie die LocalEndPoint -Eigenschaft verwenden, nachdem die SendTo Methode erfolgreich abgeschlossen wurde.

Obwohl für verbindungslose Protokolle vorgesehen, SendTo funktioniert es auch mit verbindungsorientierten Protokollen. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie zunächst eine Remotehostverbindung herstellen, indem Sie die Connect -Methode aufrufen oder eine eingehende Verbindungsanforderung mit der Accept -Methode akzeptieren. Wenn Sie keine Remotehostverbindung herstellen oder akzeptieren, SendTo löst ein aus SocketException. Sie können auch einen Standard-Remotehost für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo Methode aufrufen. Ignoriert in beiden Fällen den remoteEP Parameter und SendTo sendet nur Daten an den verbundenen oder standardfernen Host.

Blockierende Sockets werden blockiert, bis alle angeforderten Bytes in gesendet buffer werden. Da eine Nichtblockierung Socket sofort abgeschlossen wird, werden möglicherweise nicht alle Bytes in gesendet buffer. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang erneut zu wiederholen, bis die Anwendung alle Bytes in sendet buffer. Es gibt auch keine Garantie, dass die von Ihnen gesendeten Daten sofort im Netzwerk angezeigt werden. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine erhebliche Menge auslaufende Daten gesammelt wird. Ein erfolgreicher Abschluss der SendTo Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für ein Netzwerk sendet.

Wenn Sie ein verbindungsloses Protokoll im Blockierungsmodus verwenden, wird blockiert, SendTo bis das Datagramm gesendet wird. Wenn Sie Daten an eine Broadcastadresse senden möchten, müssen Sie zuerst die SetSocketOption -Methode aufrufen und die Socketoption auf SocketOptionName.Broadcastfestlegen. Außerdem müssen Sie sicherstellen, dass die Anzahl der gesendeten Bytes die maximale Paketgröße des zugrunde liegenden Dienstanbieters nicht überschreitet. Wenn dies der Fall ist, wird das Datagramm nicht gesendet und SendTo löst einen aus SocketException.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie eine ausführliche Beschreibung des Fehlers in der Dokumentation zur Windows Sockets-API, Version 2 .

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Weitere Informationen

Gilt für:

SendTo(Byte[], EndPoint)

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Sendet Daten an den angegebenen Endpunkt.

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

Parameter

buffer
Byte[]

Ein Array vom Typ Byte, das die zu sendenden Daten enthält.

remoteEP
EndPoint

Der EndPoint, der das Ziel der Daten darstellt.

Gibt zurück

Die Anzahl der gesendeten Bytes.

Ausnahmen

buffer ist null.

- oder -

remoteEP ist null.

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Beispiele

Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remotehost gesendet.

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

Hinweise

In dieser Überladung ist der Pufferoffset standardmäßig auf 0, die Anzahl der Bytes, die Standardwerte auf die Größe des buffer Parameters senden sollen, und der SocketFlags Wert ist standardmäßig auf 0 festgelegt.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie keinen Standard-Remotehost mit der Connect -Methode einrichten, bevor Sie aufrufen SendTo. Sie müssen dies nur tun, wenn Sie die Send -Methode aufrufen möchten. Wenn Sie die Connect -Methode vor dem Aufrufen SendToaufrufen, überschreibt der remoteEP Parameter den angegebenen Standard-Remotehost nur für diesen Sendevorgang. Sie müssen die Bind Methode auch nicht aufrufen, da der zugrunde liegende Dienstanbieter die am besten geeignete lokale Netzwerkadresse und Portnummer zuweisen wird. Wenn Sie die zugewiesene lokale Netzwerkadresse und Portnummer identifizieren müssen, können Sie die LocalEndPoint -Eigenschaft verwenden, nachdem die SendTo Methode erfolgreich abgeschlossen wurde.

Obwohl für verbindungslose Protokolle vorgesehen, SendTo funktioniert es auch mit verbindungsorientierten Protokollen. Wenn Sie ein verbindungsorientiertes Protokoll verwenden, müssen Sie zunächst eine Remotehostverbindung herstellen, indem Sie die Connect -Methode aufrufen oder eine eingehende Verbindungsanforderung mit der Accept -Methode akzeptieren. Wenn Sie keine Remotehostverbindung herstellen oder akzeptieren, SendTo löst ein aus SocketException. Sie können auch einen Standard-Remotehost für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo Methode aufrufen. Ignoriert in beiden Fällen den remoteEP Parameter und SendTo sendet nur Daten an den verbundenen oder standardfernen Host.

Blockierende Sockets werden blockiert, bis alle Bytes im Puffer gesendet werden. Da eine Nichtblockierung Socket sofort abgeschlossen wird, werden möglicherweise nicht alle Bytes in gesendet buffer. Es liegt in der Verantwortung Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang erneut zu wiederholen, bis die Anwendung alle Bytes in sendet buffer. Es gibt auch keine Garantie, dass die von Ihnen gesendeten Daten sofort im Netzwerk angezeigt werden. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine erhebliche Menge ausgehender Daten gesammelt wird. Ein erfolgreicher Abschluss der SendTo Methode bedeutet, dass das zugrunde liegende System Platz zum Puffern Ihrer Daten für ein Netzwerk sendet.

Wenn Sie ein verbindungsloses Protokoll im Blockierungsmodus verwenden, wird blockiert, SendTo bis das Datagramm gesendet wird. Wenn Sie Daten an eine Broadcastadresse senden möchten, müssen Sie zuerst die SetSocketOption -Methode aufrufen und die Socketoption auf SocketOptionName.Broadcastfestlegen. Außerdem müssen Sie sicherstellen, dass die Anzahl der gesendeten Bytes die maximale Paketgröße des zugrunde liegenden Dienstanbieters nicht überschreitet. Wenn dies der Fall ist, wird das Datagramm nicht gesendet und SendTo löst einen aus SocketException.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten. Nachdem Sie diesen Code erhalten haben, finden Sie eine ausführliche Beschreibung des Fehlers in der Dokumentation zur Windows Sockets-API, Version 2 .

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren. Weitere Informationen finden Sie unter Netzwerkablaufverfolgung in .NET Framework.

Weitere Informationen

Gilt für:

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

Quelle:
Socket.cs
Quelle:
Socket.cs
Quelle:
Socket.cs

Sendet Daten an einen bestimmten Endpunkt unter Verwendung der angegebenen 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

Parameter

buffer
ReadOnlySpan<Byte>

Eins Spanne von Bytes, die die zu sendenden Daten enthält.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.

remoteEP
EndPoint

Der EndPoint, der das Ziel der Daten darstellt.

Gibt zurück

Die Anzahl der gesendeten Bytes.

Ausnahmen

remoteEP ist null.

Fehler beim Versuch, auf den Socket zuzugreifen.

Der Socket wurde geschlossen.

Gilt für: