Socket.SendTo Methode

Definition

Sendet Daten an einen bestimmten Endpunkt.Sends data to a specific endpoint.

Überlädt

SendTo(Byte[], EndPoint)

Sendet Daten an den angegebenen Endpunkt.Sends data to the specified endpoint.

SendTo(Byte[], SocketFlags, EndPoint)

Sendet Daten an einen bestimmten Endpunkt unter Verwendung der angegebenen SocketFlags.Sends data to a specific endpoint using the specified SocketFlags.

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

Sendet die angegebene Anzahl von Datenbytes an den angegebenen Endpunkt, wobei die angegebenen SocketFlags verwendet werden.Sends the specified number of bytes of data to the specified endpoint using the specified SocketFlags.

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.Sends the specified number of bytes of data to the specified endpoint, starting at the specified location in the buffer, and using the specified SocketFlags.

SendTo(Byte[], EndPoint)

Sendet Daten an den angegebenen Endpunkt.Sends data to the specified endpoint.

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.An array of type Byte that contains the data to be sent.

remoteEP
EndPoint

Der EndPoint, der das Ziel der Daten darstellt.The EndPoint that represents the destination for the data.

Gibt zurück

Die Anzahl der gesendeten Bytes.The number of bytes sent.

Ausnahmen

buffer ist null.buffer is null.

- oder --or- remoteEP ist null.remoteEP is null.

Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket.

Der Socket wurde geschlossen.The Socket has been closed.

Beispiele

Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remote Host gesendet.The following code example sends a connectionless datagram to the specified remote host.

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 Puffer Offset standardmäßig auf 0, die Anzahl der zu sendenden Bytes standardmäßig auf die Größe des buffer-Parameters und der SocketFlags Wert standardmäßig auf 0 (null) eingestellt.In this overload, the buffer offset defaults to 0, the number of bytes to send defaults to the size of the buffer parameter, and the SocketFlags value defaults to 0.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen von SendTokeinen Standard-Remote Host mit der Connect-Methode erstellen.If you are using a connectionless protocol, you do not need to establish a default remote host with the Connect method prior to calling SendTo. Dies ist nur erforderlich, wenn Sie beabsichtigen, die Send-Methode aufzurufen.You only need to do this if you intend to call the Send method. Wenn Sie die Connect-Methode aufrufen, bevor Sie SendToaufrufen, überschreibt der remoteEP-Parameter den angegebenen Standard Remote Host nur für diesen Sendevorgang.If you do call the Connect method prior to calling SendTo, the remoteEP parameter will override the specified default remote host for that send operation only. Außerdem ist es nicht erforderlich, die Bind-Methode aufzurufen, da der zugrunde liegende Dienstanbieter die am besten geeignete Adresse und Portnummer für das lokale Netzwerk zuweist.You are also not required to call the Bind method, because the underlying service provider will assign the most appropriate local network address and port number. Wenn Sie die Adresse und die Portnummer des zugewiesenen lokalen Netzwerks identifizieren müssen, können Sie die LocalEndPoint-Eigenschaft verwenden, nachdem die SendTo-Methode erfolgreich abgeschlossen wurde.If you need to identify the assigned local network address and port number, you can use the LocalEndPoint property after the SendTo method successfully completes.

Obwohl SendTo für verbindungslose Protokolle vorgesehen ist, funktioniert auch mit Verbindungs orientierten Protokollen.Although intended for connectionless protocols, SendTo also works with connection-oriented protocols. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie zuerst eine Remote Host Verbindung herstellen, indem Sie die Connect-Methode aufrufen oder eine eingehende Verbindungsanforderung mit der Accept-Methode akzeptieren.If you are using a connection-oriented protocol, you must first establish a remote host connection by calling the Connect method or accept an incoming connection request using the Accept method. Wenn Sie keine Remote Host Verbindung einrichten oder akzeptieren, wird SendTo eine SocketExceptionauslösen.If you do not establish or accept a remote host connection, SendTo will throw a SocketException. Sie können auch einen Standard-Remote Host für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo-Methode aufrufen.You can also establish a default remote host for a connectionless protocol prior to calling the SendTo method. In beiden Fällen ignoriert SendTo den remoteEP-Parameter und sendet nur Daten an den verbundenen oder standardmäßigen Remote Host.In either of these cases, SendTo will ignore the remoteEP parameter and only send data to the connected or default remote host.

Blockierende Sockets werden blockiert, bis alle Bytes im Puffer gesendet werden.Blocking sockets will block until the all of the bytes in the buffer are sent. Da eine nicht blockierende Socket sofort abgeschlossen wird, sendet Sie möglicherweise nicht alle Bytes in der buffer.Since a nonblocking Socket completes immediately, it might not send all of the bytes in the buffer. Es ist Aufgabe Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung alle Bytes im buffersendet.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends all of the bytes in the buffer. Außerdem gibt es keine Garantie dafür, dass die gesendeten Daten sofort im Netzwerk angezeigt werden.There is also no guarantee that the data you send will appear on the network immediately. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine beträchtliche Menge an ausgehenden Daten gesammelt wird.To increase network efficiency, the underlying system may delay transmission until a significant amount of outgoing data is collected. Ein erfolgreicher Abschluss der SendTo-Methode bedeutet, dass das zugrunde liegende System über Platz verfügt, um die Daten für ein Netzwerk Sendevorgang zu puffern.A successful completion of the SendTo method means that the underlying system has had room to buffer your data for a network send.

Wenn Sie ein verbindungsloses Protokoll im Blockierungs Modus verwenden, wird SendTo blockiert, bis das Datagramm gesendet wird.If you are using a connectionless protocol in blocking mode, SendTo will block until the datagram is sent. Wenn Sie Daten an eine Broadcast Adresse senden möchten, müssen Sie zuerst die SetSocketOption-Methode aufzurufen und die Socketoption auf SocketOptionName.Broadcastfestlegen.If you want to send data to a broadcast address, you must first call the SetSocketOption method and set the socket option to SocketOptionName.Broadcast. Außerdem müssen Sie sicherstellen, dass die Anzahl der gesendeten Bytes nicht die maximale Paketgröße des zugrunde liegenden Dienstanbieters überschreitet.You must also be sure that the number of bytes sent does not exceed the maximum packet size of the underlying service provider. Wenn dies der Fall ist, wird das Datagramm nicht gesendet, und SendTo löst eine SocketExceptionaus.If it does, the datagram will not be sent and SendTo will throw a SocketException.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Siehe auch

SendTo(Byte[], SocketFlags, EndPoint)

Sendet Daten an einen bestimmten Endpunkt unter Verwendung der angegebenen SocketFlags.Sends data to a specific endpoint using the specified 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

Parameter

buffer
Byte[]

Ein Array vom Typ Byte, das die zu sendenden Daten enthält.An array of type Byte that contains the data to be sent.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.A bitwise combination of the SocketFlags values.

remoteEP
EndPoint

Der EndPoint, der den Zielort der Daten darstellt.The EndPoint that represents the destination location for the data.

Gibt zurück

Die Anzahl der gesendeten Bytes.The number of bytes sent.

Ausnahmen

buffer ist null.buffer is null.

- oder --or- remoteEP ist null.remoteEP is null.

Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket.

Der Socket wurde geschlossen.The Socket has been closed.

Beispiele

Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remote Host gesendet.The following code example sends a connectionless datagram to the specified remote host. SocketFlags werden an die SendTo-Methode übermittelt.SocketFlags are passed to the SendTo method.

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 Puffer Offset standardmäßig auf 0 und die Anzahl der zu sendenden Bytes standardmäßig auf die Größe der buffer.In this overload, the buffer offset defaults to 0, and the number of bytes to send defaults to the size of the buffer. Wenn Sie das DontRoute-Flag als socketflags-Parameter angeben, werden die Daten, die Sie senden, nicht weitergeleitet.If you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen von SendTokeinen Standard-Remote Host mit der Connect-Methode erstellen.If you are using a connectionless protocol, you do not need to establish a default remote host with the Connect method prior to calling SendTo. Dies ist nur erforderlich, wenn Sie beabsichtigen, die Send-Methode aufzurufen.You only need to do this if you intend to call the Send method. Wenn Sie die Connect-Methode aufrufen, bevor Sie SendToaufrufen, überschreibt der remoteEP-Parameter den angegebenen Standard Remote Host nur für diesen Sendevorgang.If you do call the Connect method prior to calling SendTo, the remoteEP parameter will override the specified default remote host for that send operation only. Außerdem ist es nicht erforderlich, die Bind-Methode aufzurufen, da der zugrunde liegende Dienstanbieter die am besten geeignete Adresse und Portnummer für das lokale Netzwerk zuweist.You are also not required to call the Bind method, because the underlying service provider will assign the most appropriate local network address and port number. Wenn Sie die Adresse und die Portnummer des zugewiesenen lokalen Netzwerks identifizieren müssen, können Sie die LocalEndPoint-Eigenschaft verwenden, nachdem die SendTo-Methode erfolgreich abgeschlossen wurde.If you need to identify the assigned local network address and port number, you can use the LocalEndPoint property after the SendTo method successfully completes.

Obwohl SendTo für verbindungslose Protokolle vorgesehen ist, funktioniert auch mit Verbindungs orientierten Protokollen.Although intended for connectionless protocols, SendTo also works with connection-oriented protocols. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie zuerst eine Remote Host Verbindung herstellen, indem Sie die Connect-Methode aufrufen oder eine eingehende Verbindungsanforderung mit der Accept-Methode akzeptieren.If you are using a connection-oriented protocol, you must first establish a remote host connection by calling the Connect method or accept an incoming connection request using the Accept method. Wenn Sie keine Remote Host Verbindung einrichten oder akzeptieren, wird SendTo eine SocketExceptionauslösen.If you do not establish or accept a remote host connection, SendTo will throw a SocketException. Sie können auch einen Standard-Remote Host für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo-Methode aufrufen.You can also establish a default remote host for a connectionless protocol prior to calling the SendTo method. In beiden Fällen ignoriert SendTo den remoteEP-Parameter und sendet nur Daten an den verbundenen oder standardmäßigen Remote Host.In either of these cases, SendTo will ignore the remoteEP parameter and only send data to the connected or default remote host.

Blockierende Sockets werden blockiert, bis die angeforderten gesamten Bytes im buffer gesendet werden.Blocking sockets will block until the requested all of the bytes in the buffer are sent. Da eine nicht blockierende Socket sofort abgeschlossen wird, sendet Sie möglicherweise nicht alle Bytes in der buffer.Since a nonblocking Socket completes immediately, it might not send all of the bytes in the buffer. Es ist Aufgabe Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung alle Bytes im buffersendet.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends all of the bytes in the buffer. Außerdem gibt es keine Garantie dafür, dass die gesendeten Daten sofort im Netzwerk angezeigt werden.There is also no guarantee that the data you send will appear on the network immediately. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine beträchtliche Menge an ausgehenden Daten gesammelt wird.To increase network efficiency, the underlying system may delay transmission until a significant amount of out-going data is collected. Ein erfolgreicher Abschluss der SendTo-Methode bedeutet, dass das zugrunde liegende System über Platz verfügt, um die Daten für ein Netzwerk Sendevorgang zu puffern.A successful completion of the SendTo method means that the underlying system has had room to buffer your data for a network send.

Wenn Sie ein verbindungsloses Protokoll im Blockierungs Modus verwenden, wird SendTo blockiert, bis das Datagramm gesendet wird.If you are using a connectionless protocol in blocking mode, SendTo will block until the datagram is sent. Wenn Sie Daten an eine Broadcast Adresse senden möchten, müssen Sie zuerst die SetSocketOption-Methode aufzurufen und die Socketoption auf SocketOptionName.Broadcastfestlegen.If you want to send data to a broadcast address, you must first call the SetSocketOption method and set the socket option to SocketOptionName.Broadcast. Außerdem müssen Sie sicherstellen, dass die Anzahl der gesendeten Bytes nicht die maximale Paketgröße des zugrunde liegenden Dienstanbieters überschreitet.You must also be sure that the number of bytes sent does not exceed the maximum packet size of the underlying service provider. Wenn dies der Fall ist, wird das Datagramm nicht gesendet, und SendTo löst eine SocketExceptionaus.If it does, the datagram will not be sent and SendTo will throw a SocketException.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Siehe auch

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

Sendet die angegebene Anzahl von Datenbytes an den angegebenen Endpunkt, wobei die angegebenen SocketFlags verwendet werden.Sends the specified number of bytes of data to the specified endpoint using the specified 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

Parameter

buffer
Byte[]

Ein Array vom Typ Byte, das die zu sendenden Daten enthält.An array of type Byte that contains the data to be sent.

size
Int32

Die Anzahl von Bytes, die gesendet werden sollen.The number of bytes to send.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.A bitwise combination of the SocketFlags values.

remoteEP
EndPoint

Der EndPoint, der den Zielort der Daten darstellt.The EndPoint that represents the destination location for the data.

Gibt zurück

Die Anzahl der gesendeten Bytes.The number of bytes sent.

Ausnahmen

buffer ist null.buffer is null.

- oder --or- remoteEP ist null.remoteEP is null.

Die angegebene size ist größer als buffer.The specified size exceeds the size of buffer.

Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket.

Der Socket wurde geschlossen.The Socket has been closed.

Beispiele

Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remote Host gesendet.The following code example sends a connectionless datagram to the specified remote host. Die Größe und SocketFlags werden an die SendTo-Methode übermittelt.The size and SocketFlags are passed to the SendTo method.

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 wird der Puffer Offset standardmäßig auf 0 eingestellt.In this overload, the buffer offset defaults to 0. Wenn Sie das DontRoute-Flag als socketflags-Parameter angeben, werden die Daten, die Sie senden, nicht weitergeleitet.If you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen von SendTokeinen Standard-Remote Host mit der Connect-Methode erstellen.If you are using a connectionless protocol, you do not need to establish a default remote host with the Connect method prior to calling SendTo. Dies ist nur erforderlich, wenn Sie beabsichtigen, die Send-Methode aufzurufen.You only need to do this if you intend to call the Send method. Wenn Sie die Connect-Methode aufrufen, bevor Sie SendToaufrufen, überschreibt der remoteEP-Parameter den angegebenen Standard Remote Host nur für diesen Sendevorgang.If you do call the Connect method prior to calling SendTo, the remoteEP parameter will override the specified default remote host for that send operation only. Außerdem ist es nicht erforderlich, die Bind-Methode aufzurufen, da der zugrunde liegende Dienstanbieter die am besten geeignete Adresse und Portnummer für das lokale Netzwerk zuweist.You are also not required to call the Bind method, because the underlying service provider will assign the most appropriate local network address and port number. Wenn Sie die Adresse und die Portnummer des zugewiesenen lokalen Netzwerks identifizieren müssen, können Sie die LocalEndPoint-Eigenschaft verwenden, nachdem die SendTo-Methode erfolgreich abgeschlossen wurde.If you need to identify the assigned local network address and port number, you can use the LocalEndPoint property after the SendTo method successfully completes.

Obwohl SendTo für verbindungslose Protokolle vorgesehen ist, funktioniert auch mit Verbindungs orientierten Protokollen.Although intended for connectionless protocols, SendTo also works with connection-oriented protocols. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie zuerst eine Remote Host Verbindung herstellen, indem Sie die Connect-Methode aufrufen oder eine eingehende Verbindungsanforderung mit der Accept-Methode akzeptieren.If you are using a connection-oriented protocol, you must first establish a remote host connection by calling the Connect method or accept an incoming connection request using the Accept method. Wenn Sie keine Remote Host Verbindung einrichten oder akzeptieren, wird SendTo eine SocketExceptionauslösen.If you do not establish or accept a remote host connection, SendTo will throw a SocketException. Sie können auch einen Standard-Remote Host für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo-Methode aufrufen.You can also establish a default remote host for a connectionless protocol prior to calling the SendTo method. In beiden Fällen ignoriert SendTo den remoteEP-Parameter und sendet nur Daten an den verbundenen oder standardmäßigen Remote Host.In either of these cases, SendTo will ignore the remoteEP parameter and only send data to the connected or default remote host.

Blockierende Sockets werden blockiert, bis die angeforderte Anzahl von Bytes gesendet wird.Blocking sockets will block until the requested number of bytes are sent. Da eine nicht blockierende Socket sofort abgeschlossen wird, werden möglicherweise nicht alle in einem einzelnen Vorgang angeforderten Bytes gesendet.Since a nonblocking Socket completes immediately, it might not send all of the bytes requested in a single operation. Es ist Aufgabe Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die angeforderte Anzahl von Bytes sendet.It is your application's responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the requested number of bytes. Außerdem gibt es keine Garantie dafür, dass die gesendeten Daten sofort im Netzwerk angezeigt werden.There is also no guarantee that the data you send will appear on the network immediately. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine beträchtliche Menge an ausgehenden Daten gesammelt wird.To increase network efficiency, the underlying system may delay transmission until a significant amount of out-going data is collected. Ein erfolgreicher Abschluss der SendTo-Methode bedeutet, dass das zugrunde liegende System über Platz verfügt, um die Daten für ein Netzwerk Sendevorgang zu puffern.A successful completion of the SendTo method means that the underlying system has had room to buffer your data for a network send.

Wenn Sie ein verbindungsloses Protokoll im Blockierungs Modus verwenden, wird SendTo blockiert, bis das Datagramm gesendet wird.If you are using a connectionless protocol in blocking mode, SendTo will block until the datagram is sent. Wenn Sie Daten an eine Broadcast Adresse senden möchten, müssen Sie zuerst die SetSocketOption-Methode aufzurufen und die Socketoption auf SocketOptionName.Broadcastfestlegen.If you want to send data to a broadcast address, you must first call the SetSocketOption method and set the socket option to SocketOptionName.Broadcast. Außerdem müssen Sie sicherstellen, dass die Anzahl der gesendeten Bytes nicht die maximale Paketgröße des zugrunde liegenden Dienstanbieters überschreitet.You must also be sure that the number of bytes sent does not exceed the maximum packet size of the underlying service provider. Wenn dies der Fall ist, wird das Datagramm nicht gesendet, und SendTo löst eine SocketExceptionaus.If it does, the datagram will not be sent and SendTo will throw a SocketException.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Siehe auch

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.Sends the specified number of bytes of data to the specified endpoint, starting at the specified location in the buffer, and using the specified 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

Parameter

buffer
Byte[]

Ein Array vom Typ Byte, das die zu sendenden Daten enthält.An array of type Byte that contains the data to be sent.

offset
Int32

Die Position im Datenpuffer, an der mit dem Senden von Daten begonnen werden soll.The position in the data buffer at which to begin sending data.

size
Int32

Die Anzahl von Bytes, die gesendet werden sollen.The number of bytes to send.

socketFlags
SocketFlags

Eine bitweise Kombination der SocketFlags-Werte.A bitwise combination of the SocketFlags values.

remoteEP
EndPoint

Der EndPoint, der den Zielort der Daten darstellt.The EndPoint that represents the destination location for the data.

Gibt zurück

Die Anzahl der gesendeten Bytes.The number of bytes sent.

Ausnahmen

buffer ist null.buffer is null.

- oder --or- remoteEP ist null.remoteEP is null.

offset ist kleiner als 0.offset is less than 0.

- oder --or- offset ist größer als die Länge von buffer.offset is greater than the length of buffer.

- oder --or- size ist kleiner als 0.size is less than 0.

- oder --or- size ist größer als die Länge von buffer minus dem Wert des offset-Parameters.size is greater than the length of buffer minus the value of the offset parameter.

socketFlags ist keine gültige Kombination von Werten.socketFlags is not a valid combination of values.

- oder --or- Beim Zugriff auf den Socket tritt ein Betriebssystemfehler auf.An operating system error occurs while accessing the Socket.

Der Socket wurde geschlossen.The Socket has been closed.

Ein Aufrufer in der Aufrufliste verfügt nicht über die erforderlichen Berechtigungen.A caller in the call stack does not have the required permissions.

Beispiele

Im folgenden Codebeispiel wird ein verbindungsloses Datagramm an den angegebenen Remote Host gesendet.The following code example sends a connectionless datagram to the specified remote host. Offset, Größe und SocketFlags werden an die SendTo-Methode übermittelt.The offset, size, and SocketFlags are passed to the SendTo method.

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 Daten, die Sie senden, nicht weitergeleitet.In this overload, if you specify the DontRoute flag as the socketflags parameter, the data you are sending will not be routed.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie vor dem Aufrufen von SendTokeinen Standard-Remote Host mit der Connect-Methode erstellen.If you are using a connectionless protocol, you do not need to establish a default remote host with the Connect method prior to calling SendTo. Dies ist nur erforderlich, wenn Sie beabsichtigen, die Send-Methode aufzurufen.You only need to do this if you intend to call the Send method. Wenn Sie die Connect-Methode aufrufen, bevor Sie SendToaufrufen, überschreibt der remoteEP-Parameter den angegebenen Standard Remote Host nur für diesen Sendevorgang.If you do call the Connect method prior to calling SendTo, the remoteEP parameter will override the specified default remote host for that send operation only. Außerdem ist es nicht erforderlich, die Bind-Methode aufzurufen, da der zugrunde liegende Dienstanbieter die am besten geeignete Adresse und Portnummer für das lokale Netzwerk zuweist.You are also not required to call the Bind method, because the underlying service provider will assign the most appropriate local network address and port number. Wenn Sie die Adresse und die Portnummer des zugewiesenen lokalen Netzwerks identifizieren müssen, können Sie die LocalEndPoint-Eigenschaft verwenden, nachdem die SendTo-Methode erfolgreich abgeschlossen wurde.If you need to identify the assigned local network address and port number, you can use the LocalEndPoint property after the SendTo method successfully completes.

Obwohl SendTo für verbindungslose Protokolle vorgesehen ist, funktioniert auch mit Verbindungs orientierten Protokollen.Although intended for connectionless protocols, SendTo also works with connection-oriented protocols. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie zuerst eine Remote Host Verbindung herstellen, indem Sie die Connect-Methode aufrufen oder eine eingehende Verbindungsanforderung mit der Accept-Methode akzeptieren.If you are using a connection-oriented protocol, you must first establish a remote host connection by calling the Connect method or accept an incoming connection request using the Accept method. Wenn Sie keine Remote Host Verbindung einrichten oder akzeptieren, wird SendTo eine SocketExceptionauslösen.If you do not establish or accept a remote host connection, SendTo will throw a SocketException. Sie können auch einen Standard-Remote Host für ein verbindungsloses Protokoll einrichten, bevor Sie die SendTo-Methode aufrufen.You can also establish a default remote host for a connectionless protocol prior to calling the SendTo method. In beiden Fällen ignoriert SendTo den remoteEP-Parameter und sendet nur Daten an den verbundenen oder standardmäßigen Remote Host.In either of these cases, SendTo will ignore the remoteEP parameter and only send data to the connected or default remote host.

Blockierende Sockets werden blockiert, bis die angeforderte Anzahl von Bytes gesendet wird.Blocking sockets will block until the requested number of bytes are sent. Da eine nicht blockierende Socket sofort abgeschlossen wird, werden möglicherweise nicht alle in einem einzelnen Vorgang angeforderten Bytes gesendet.Since a non-blocking Socket completes immediately, it might not send all of the bytes requested in a single operation. Ihre Anwendungen sind dafür verantwortlich, die Anzahl der gesendeten Bytes zu verfolgen und den Vorgang zu wiederholen, bis die Anwendung die angeforderte Anzahl von Bytes sendet.It is your applications responsibility to keep track of the number of bytes sent and to retry the operation until the application sends the requested number of bytes. Außerdem gibt es keine Garantie dafür, dass die gesendeten Daten sofort im Netzwerk angezeigt werden.There is also no guarantee that the data you send will appear on the network immediately. Um die Netzwerkeffizienz zu erhöhen, kann das zugrunde liegende System die Übertragung verzögern, bis eine beträchtliche Menge an ausgehenden Daten gesammelt wird.To increase network efficiency, the underlying system may delay transmission until a significant amount of out-going data is collected. Ein erfolgreicher Abschluss der SendTo-Methode bedeutet, dass das zugrunde liegende System über Platz verfügt, um die Daten für ein Netzwerk Sendevorgang zu puffern.A successful completion of the SendTo method means that the underlying system has had room to buffer your data for a network send.

Wenn Sie ein verbindungsloses Protokoll im Blockierungs Modus verwenden, wird SendTo blockiert, bis das Datagramm gesendet wird.If you are using a connectionless protocol in blocking mode, SendTo will block until the datagram is sent. Wenn Sie Daten an eine Broadcast Adresse senden möchten, müssen Sie zuerst die SetSocketOption-Methode aufzurufen und die Socketoption auf SocketOptionName.Broadcastfestlegen.If you want to send data to a broadcast address, you must first call the SetSocketOption method and set the socket option to SocketOptionName.Broadcast. Außerdem müssen Sie sicherstellen, dass die Größe die maximale Paketgröße des zugrunde liegenden Dienstanbieters nicht überschreitet.You must also be sure that the size does not exceed the maximum packet size of the underlying service provider. Wenn dies der Fall ist, wird das Datagramm nicht gesendet, und SendTo löst eine SocketExceptionaus.If it does, the datagram will not be sent and SendTo will throw a SocketException.

Hinweis

Wenn Sie erhalten eine SocketException, verwenden die SocketException.ErrorCode Eigenschaft, um den spezifischen Fehlercode zu erhalten.If you receive a SocketException, use the SocketException.ErrorCode property to obtain the specific error code. Nachdem Sie diesen Code abgerufen haben, finden Sie in der API-Fehlercode Dokumentation der Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you have obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

Hinweis

Dieser Member gibt Ablaufverfolgungsinformationen aus, wenn Sie die Netzwerkablaufverfolgung in der Anwendung aktivieren.This member outputs trace information when you enable network tracing in your application. Weitere Informationen finden Sie unter Netzwerk Ablauf Verfolgung in der .NET Framework.For more information, see Network Tracing in the .NET Framework.

Siehe auch

Gilt für: