Socket.Send Methode

Definition

Sendet Daten an einen verbundenen Socket.Sends data to a connected Socket.

Überlädt

Send(Byte[])

Sendet Daten an einen verbundenen Socket.Sends data to a connected Socket.

Send(IList<ArraySegment<Byte>>)

Sendet den Satz der Puffer in der Liste an einen verbundenen Socket.Sends the set of buffers in the list to a connected Socket.

Send(ReadOnlySpan<Byte>)

Sendet Daten an einen verbundenen Socket.Sends data to a connected Socket.

Send(Byte[], SocketFlags)

Sendet Daten mithilfe der angegebenen Socket an einen verbundenen SocketFlags.Sends data to a connected Socket using the specified SocketFlags.

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

Sendet den Satz von Puffern in der Liste unter Verwendung der angegebenen Socket an einen verbundenen SocketFlags.Sends the set of buffers in the list to a connected Socket, using the specified SocketFlags.

Send(ReadOnlySpan<Byte>, SocketFlags)

Sendet Daten mithilfe der angegebenen Socket an einen verbundenen SocketFlags.Sends data to a connected Socket using the specified SocketFlags.

Send(Byte[], Int32, SocketFlags)

Sendet die angegebene Anzahl von Datenbytes an einen verbundenen Socket, wobei die angegebenen SocketFlags verwendet werden.Sends the specified number of bytes of data to a connected Socket, using the specified SocketFlags.

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

Sendet den Satz von Puffern in der Liste unter Verwendung der angegebenen Socket an einen verbundenen SocketFlags.Sends the set of buffers in the list to a connected Socket, using the specified SocketFlags.

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Sendet Daten mithilfe der angegebenen Socket an einen verbundenen SocketFlags.Sends data to a connected Socket using the specified SocketFlags.

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

Sendet die angegebene Anzahl von Datenbytes an einen verbundenen Socket, beginnend bei einem angegebenen Offset und unter Verwendung der angegebenen SocketFlags.Sends the specified number of bytes of data to a connected Socket, starting at the specified offset, and using the specified SocketFlags.

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

Sendet unter Verwendung der angegebenen Socket die angegebene Anzahl von Datenbytes an einen verbundenen SocketFlags, beginnend beim angegebenen Offset.Sends the specified number of bytes of data to a connected Socket, starting at the specified offset, and using the specified SocketFlags

Send(Byte[])

Sendet Daten an einen verbundenen Socket.Sends data to a connected 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

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.

Gibt zurück

Int32

Die Anzahl der an den Socket gesendeten Bytes.The number of bytes sent to the Socket.

Ausnahmen

buffer ist null.buffer 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 das Senden von Daten auf einem verbundenen veranschaulicht Socket .The following code example demonstrates sending data on a connected 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

Hinweise

Send Sendet synchron Daten an den Remote Host, der in der- Connect oder-Methode angegeben ist, Accept und gibt die Anzahl der erfolgreich gesendeten Bytes zurück.Send synchronously sends data to the remote host specified in the Connect or Accept method and returns the number of bytes successfully sent. Send kann sowohl für Verbindungs orientierte als auch für verbindungslose Protokolle verwendet werden.Send can be used for both connection-oriented and connectionless protocols.

Diese Überladung erfordert einen Puffer, der die Daten enthält, die Sie senden möchten.This overload requires a buffer that contains the data you want to send. Der SocketFlags Standardwert ist 0, der Puffer Offset standardmäßig 0 und die Anzahl der zu sendenden Bytes standardmäßig auf die Größe des Puffers.The SocketFlags value defaults to 0, the buffer offset defaults to 0, and the number of bytes to send defaults to the size of the buffer.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie Connect vor dem Aufrufen dieser Methode aufrufen, oder es Send wird eine ausgelöst SocketException .If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remote Host Verbindung herzustellen, oder verwenden, Accept um eine eingehende Verbindung zu akzeptieren.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die- SendTo Methode verwenden.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Wenn Sie die-Methode nicht verwenden SendTo , müssen Sie vor jedem-Befehl aufruft Connect Send .If you do not use the SendTo method, you will have to call Connect before each call to Send. Sie können auch dann verwenden, SendTo Wenn Sie einen Standard-Remote Host mit erstellt haben Connect .You can use SendTo even after you have established a default remote host with Connect. Sie können den Standard-Remote Host auch vor dem Aufrufen Send von ändern, indem Sie einen weiteren Aufruf von ausführen Connect .You can also change the default remote host prior to calling Send by making another call to Connect.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, Send wird von blockiert, bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe von festgelegt Socket.SendTimeout .If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Wenn der Timeout Wert überschritten wurde, löst der Send Aufruf einen aus SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus wird Send möglicherweise auch dann erfolgreich abgeschlossen, wenn der Wert weniger als die Anzahl der Bytes im Puffer sendet.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. Es ist Aufgabe Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die Bytes im Puffer 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 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- Send 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 Send method means that the underlying system has had room to buffer your data for a network send.

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

Der erfolgreiche Abschluss eines Sendevorgang weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden.The successful completion of a send does not indicate that the data was successfully delivered. Wenn innerhalb des Transport Systems kein Pufferspeicher verfügbar ist, um die zu übertragenden Daten aufzunehmen, wird der Sendevorgang blockiert, es sei denn, der Socket wurde in den nicht blockierenden Modus versetzt.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

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:

Send(IList<ArraySegment<Byte>>)

Sendet den Satz der Puffer in der Liste an einen verbundenen Socket.Sends the set of buffers in the list to a connected 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

Parameter

buffers
IList<ArraySegment<Byte>>

Eine Liste von ArraySegment<T> vom Typ Byte mit den zu sendenden Daten.A list of ArraySegment<T>s of type Byte that contains the data to be sent.

Gibt zurück

Int32

Die Anzahl der an den Socket gesendeten Bytes.The number of bytes sent to the Socket.

Ausnahmen

buffers ist null.buffers is null.

buffers ist leer.buffers is empty.

Fehler beim Versuch, auf den Socket zuzugreifen.An error occurred when attempting to access the socket. Weitere Informationen finden Sie unten im Abschnitt Hinweise.See remarks section below.

Der Socket wurde geschlossen.The Socket has been closed.

Hinweise

Send kann sowohl für Verbindungs orientierte als auch für verbindungslose Protokolle verwendet werden.Send can be used for both connection-oriented and connectionless protocols.

Diese Überladung erfordert mindestens einen Puffer, der die Daten enthält, die Sie senden möchten.This overload requires at least one buffer that contains the data you want to send.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie Connect vor dem Aufrufen dieser Methode aufrufen, oder es Send wird eine ausgelöst SocketException .If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remote Host Verbindung herzustellen, oder verwenden, Accept um eine eingehende Verbindung zu akzeptieren.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die- SendTo Methode verwenden.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Wenn Sie die-Methode nicht verwenden SendTo , müssen Sie vor jedem-Befehl aufruft Connect Send .If you do not use the SendTo method, you will have to call Connect before each call to Send. Sie können auch dann verwenden, SendTo Wenn Sie einen Standard-Remote Host mit erstellt haben Connect .You can use SendTo even after you have established a default remote host with Connect. Sie können den Standard-Remote Host auch vor dem Aufrufen Send von ändern, indem Sie einen weiteren Aufruf von ausführen Connect .You can also change the default remote host prior to calling Send by making another call to Connect.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, Send wird von blockiert, bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe von festgelegt Socket.SendTimeout .If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Wenn der Timeout Wert überschritten wurde, löst der Send Aufruf einen aus SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus wird Send möglicherweise auch dann erfolgreich abgeschlossen, wenn der Wert weniger als die Anzahl der Bytes im Puffer sendet.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. Es ist Aufgabe Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die Bytes im Puffer 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 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- Send 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 Send method means that the underlying system has had room to buffer your data for a network send.

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

Der erfolgreiche Abschluss eines Sendevorgang weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden.The successful completion of a send does not indicate that the data was successfully delivered. Wenn innerhalb des Transport Systems kein Pufferspeicher verfügbar ist, um die zu übertragenden Daten aufzunehmen, wird der Sendevorgang blockiert, es sei denn, der Socket wurde in den nicht blockierenden Modus versetzt.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

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.

Gilt für:

Send(ReadOnlySpan<Byte>)

Sendet Daten an einen verbundenen Socket.Sends data to a connected 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

Parameter

buffer
ReadOnlySpan<Byte>

Eins Spanne von Bytes, die die zu sendenden Daten enthält.A span of bytes that contains the data to be sent.

Gibt zurück

Int32

Die Anzahl der an den Socket gesendeten Bytes.The number of bytes sent to the Socket.

Ausnahmen

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.

Hinweise

Send Sendet synchron Daten an den Remote Host, der in der- Connect oder-Methode angegeben ist, Accept und gibt die Anzahl der erfolgreich gesendeten Bytes zurück.Send synchronously sends data to the remote host specified in the Connect or Accept method and returns the number of bytes successfully sent. Send kann sowohl für Verbindungs orientierte als auch für verbindungslose Protokolle verwendet werden.Send can be used for both connection-oriented and connectionless protocols.

Diese Überladung erfordert einen Puffer, der die Daten enthält, die Sie senden möchten.This overload requires a buffer that contains the data you want to send. Der SocketFlags Standardwert ist 0, der Puffer Offset standardmäßig 0 und die Anzahl der zu sendenden Bytes standardmäßig auf die Größe des Puffers.The SocketFlags value defaults to 0, the buffer offset defaults to 0, and the number of bytes to send defaults to the size of the buffer.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie Connect vor dem Aufrufen dieser Methode aufrufen, oder es Send wird eine ausgelöst SocketException .If you're using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remote Host Verbindung herzustellen, oder verwenden, Accept um eine eingehende Verbindung zu akzeptieren.If you're using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die- SendTo Methode verwenden.If you're using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Wenn Sie die-Methode nicht verwenden SendTo , müssen Sie Connect vor jedem-Rückruf aufgerufen werden Send .If you don't use the SendTo method, you'll have to call Connect before each call to Send. Sie können auch dann verwenden, SendTo Wenn Sie einen Standard-Remote Host mit erstellt haben Connect .You can use SendTo even after you have established a default remote host with Connect. Sie können den Standard-Remote Host auch vor Aufrufen Send von ändern, indem Sie einen weiteren Aufruf von durchführen Connect .You can also change the default remote host before calling Send by making another call to Connect.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, Send wird von blockiert, bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe von festgelegt Socket.SendTimeout .If you're using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Wenn der Timeout Wert überschritten wurde, löst der Send Aufruf einen aus SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus wird Send möglicherweise auch dann erfolgreich abgeschlossen, wenn der Wert weniger als die Anzahl der Bytes im Puffer sendet.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. Es ist Aufgabe Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die Bytes im Puffer 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 bytes in the buffer. Außerdem gibt es keine Garantie dafür, dass die gesendeten Daten sofort im Netzwerk angezeigt werden.There's 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- Send 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 Send method means that the underlying system has had room to buffer your data for a network send.

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.

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.

Wichtig

Der erfolgreiche Abschluss eines Sendevorgang weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden.The successful completion of a send does not indicate that the data was successfully delivered. Wenn innerhalb des Transport Systems kein Pufferspeicher verfügbar ist, um die zu übertragenden Daten aufzunehmen, wird der Sendevorgang blockiert, es sei denn, der Socket wurde in den nicht blockierenden Modus versetzt.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Siehe auch

Gilt für:

Send(Byte[], SocketFlags)

Sendet Daten mithilfe der angegebenen Socket an einen verbundenen SocketFlags.Sends data to a connected Socket using the specified 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

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.

Gibt zurück

Int32

Die Anzahl der an den Socket gesendeten Bytes.The number of bytes sent to the Socket.

Ausnahmen

buffer ist null.buffer 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 das Senden von Daten auf einem verbundenen veranschaulicht Socket .The following code example demonstrates sending data on a connected 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

Hinweise

Send Sendet synchron Daten an den Remote Host, der in der- Connect oder-Methode eingerichtet wurde, Accept und gibt die Anzahl der erfolgreich gesendeten Bytes zurück.Send synchronously sends data to the remote host established in the Connect or Accept method and returns the number of bytes successfully sent. Die Send -Methode kann sowohl für Verbindungs orientierte als auch für verbindungslose Protokolle verwendet werden.The Send method can be used for both connection-oriented and connectionless protocols.

Diese Überladung erfordert einen Puffer, der die Daten enthält, die Sie senden möchten, und eine bitweise Kombination von SocketFlags .This overload requires a buffer that contains the data you want to send and a bitwise combination of SocketFlags. Der Puffer Offset ist standardmäßig auf 0 und die Anzahl der zu sendenden Bytes standardmäßig auf die Größe des Puffers eingestellt.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 Parameterwert angeben, werden die Daten, die Sie senden, nicht weitergeleitet.If you specify the DontRoute flag as the socketflags parameter value, the data you are sending will not be routed.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie Connect vor dem Aufrufen dieser Methode aufrufen, oder es Send wird eine ausgelöst SocketException .If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remote Host Verbindung herzustellen, oder verwenden, Accept um eine eingehende Verbindung zu akzeptieren.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die- SendTo Methode verwenden.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Wenn Sie die-Methode nicht verwenden SendTo , müssen Sie Connect vor jedem-Aufrufvorgang die-Methode aufzurufen Send .If you do not use the SendTo method, you will have to call the Connect method before each call to Send. Sie können auch dann verwenden, SendTo Wenn Sie einen Standard-Remote Host mit erstellt haben Connect .You can use SendTo even after you have established a default remote host with Connect. Sie können den Standard-Remote Host auch vor dem Aufrufen Send von ändern, indem Sie einen weiteren Aufruf von ausführen Connect .You can also change the default remote host prior to calling Send by making another call to Connect.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, Send wird von blockiert, bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe von festgelegt Socket.SendTimeout .If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Wenn der Timeout Wert überschritten wurde, löst der Send Aufruf einen aus SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus wird Send möglicherweise auch dann erfolgreich abgeschlossen, wenn der Wert weniger als die Anzahl der Bytes im Puffer sendet.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. 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 outgoing data is collected. Ein erfolgreicher Abschluss der- Send 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 Send method means that the underlying system has had room to buffer your data for a network send.

Hinweis

Sie müssen sicherstellen, dass die Größe des Puffers nicht die maximale Paketgröße des zugrunde liegenden Dienstanbieters überschreitet.You must ensure that the size of your buffer does not exceed the maximum packet size of the underlying service provider. Wenn dies der Fall ist, wird das Datagramm nicht gesendet, und es Send wird eine ausgelöst SocketException .If it does, the datagram will not be sent and Send will throw a SocketException. 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

Der erfolgreiche Abschluss eines Sendevorgang weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden.The successful completion of a send does not indicate that the data was successfully delivered. Wenn innerhalb des Transport Systems kein Pufferspeicher verfügbar ist, um die zu übertragenden Daten aufzunehmen, wird der Sendevorgang blockiert, es sei denn, der Socket wurde in den nicht blockierenden Modus versetzt.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

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:

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

Sendet den Satz von Puffern in der Liste unter Verwendung der angegebenen Socket an einen verbundenen SocketFlags.Sends the set of buffers in the list to a connected Socket, using the specified 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

Parameter

buffers
IList<ArraySegment<Byte>>

Eine Liste von ArraySegment<T> vom Typ Byte mit den zu sendenden Daten.A list of ArraySegment<T>s 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.

Gibt zurück

Int32

Die Anzahl der an den Socket gesendeten Bytes.The number of bytes sent to the Socket.

Ausnahmen

buffers ist null.buffers is null.

buffers ist leer.buffers is empty.

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.

Hinweise

Diese Überladung erfordert mindestens einen Puffer, der die Daten enthält, die Sie senden möchten.This overload requires at least one buffer that contains the data you want to send. Der SocketFlags Standardwert ist 0.The SocketFlags value 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 Connect vor dem Aufrufen dieser Methode aufrufen, oder es Send wird eine ausgelöst SocketException .If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remote Host Verbindung herzustellen, oder verwenden, Accept um eine eingehende Verbindung zu akzeptieren.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die- SendTo Methode verwenden.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Wenn Sie die-Methode nicht verwenden SendTo , müssen Sie vor jedem-Befehl aufruft Connect Send .If you do not use the SendTo method, you will have to call Connect before each call to Send. Sie können auch dann verwenden, SendTo Wenn Sie einen Standard-Remote Host mit erstellt haben Connect .You can use SendTo even after you have established a default remote host with Connect. Sie können den Standard-Remote Host auch vor dem Aufrufen Send von ändern, indem Sie einen weiteren Aufruf von ausführen Connect .You can also change the default remote host prior to calling Send by making another call to Connect.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, Send wird von blockiert, bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe von festgelegt Socket.SendTimeout .If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Wenn der Timeout Wert überschritten wurde, löst der Send Aufruf einen aus SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. Im Modus, der nicht blockiert wird, wird Send möglicherweise erfolgreich abgeschlossen, auch wenn er weniger als die Anzahl der Bytes im Puffer sendet.In non-blocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. Es ist Aufgabe Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die Bytes im Puffer 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 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- Send 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 Send method means that the underlying system has had room to buffer your data for a network send.

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

Der erfolgreiche Abschluss eines Sendevorgang weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden.The successful completion of a send does not indicate that the data was successfully delivered. Wenn innerhalb des Transport Systems kein Pufferspeicher verfügbar ist, um die zu übertragenden Daten aufzunehmen, wird der Sendevorgang blockiert, es sei denn, der Socket wurde in den nicht blockierenden Modus versetzt.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

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.

Gilt für:

Send(ReadOnlySpan<Byte>, SocketFlags)

Sendet Daten mithilfe der angegebenen Socket an einen verbundenen SocketFlags.Sends data to a connected Socket using the specified 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

Parameter

buffer
ReadOnlySpan<Byte>

Eins Spanne von Bytes, die die zu sendenden Daten enthält.A span of bytes that contains the data to be sent.

socketFlags
SocketFlags

Eine bitweise Kombination der Enumerationswerte, die das Sende- und Empfangsverhalten angeben.A bitwise combination of the enumeration values that specifies send and receive behaviors.

Gibt zurück

Int32

Die Anzahl der an den Socket gesendeten Bytes.The number of bytes sent to the Socket.

Ausnahmen

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.

Siehe auch

Gilt für:

Send(Byte[], Int32, SocketFlags)

Sendet die angegebene Anzahl von Datenbytes an einen verbundenen Socket, wobei die angegebenen SocketFlags verwendet werden.Sends the specified number of bytes of data to a connected Socket, using the specified 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

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.

Gibt zurück

Int32

Die Anzahl der an den Socket gesendeten Bytes.The number of bytes sent to the Socket.

Ausnahmen

buffer ist null.buffer is null.

size ist größer als 0 oder übersteigt die Puffergröße.size is less than 0 or exceeds the size of the buffer.

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

- oder --or- Beim Zugriff auf den Socket ist ein Fehler auf Betriebssystemebene aufgetreten.An operating system error occurs while accessing the socket.

Der Socket wurde geschlossen.The Socket has been closed.

Beispiele

Das folgende Codebeispiel sendet die Daten, die im Puffer gefunden werden, und gibt None für an SocketFlags .The following code example sends the data found in buffer, and specifies None for SocketFlags.

// 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, 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);
        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

Hinweise

Send Sendet synchron Daten an den Remote Host, der in der- Connect oder-Methode eingerichtet wurde, Accept und gibt die Anzahl der erfolgreich gesendeten Bytes zurück.Send synchronously sends data to the remote host established in the Connect or Accept method and returns the number of bytes successfully sent. Send kann sowohl für Verbindungs orientierte als auch für verbindungslose Protokolle verwendet werden.Send can be used for both connection-oriented and connectionless protocols.

Diese Überladung erfordert einen Puffer, der die Daten enthält, die Sie senden möchten, die Anzahl der zu sendenden Bytes und eine bitweise Kombination von Any SocketFlags .This overload requires a buffer that contains the data you want to send, the number of bytes you want to send, and a bitwise combination of any SocketFlags. 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're sending won't be routed.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie Connect vor dem Aufrufen dieser Methode aufrufen, oder es Send wird eine ausgelöst SocketException .If you're using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remote Host Verbindung herzustellen, oder verwenden, Accept um eine eingehende Verbindung zu akzeptieren.If you're using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die- SendTo Methode verwenden.If you're using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Wenn Sie die SendTo Methode für die Methode nicht benötigen, müssen Sie die-Methode aufrufen, Connect bevor Sie die- Send Methode aufrufen.If you don'tuse the SendTo method, you'll have to call the Connect method before each call to the Send method. Sie können auch dann verwenden, SendTo Wenn Sie einen Standard-Remote Host mit erstellt haben Connect .You can use SendTo even after you've established a default remote host with Connect. Sie können den Standard-Remote Host auch vor Aufrufen Send von ändern, indem Sie einen weiteren Aufruf von durchführen Connect .You can also change the default remote host before calling Send by making another call to Connect.

Mit einem Verbindungs orientierten Protokoll blockiert, Send bis die angeforderte Anzahl von Bytes gesendet wird, es sei denn, ein Timeout wurde mithilfe von festgelegt Socket.SendTimeout .With a connection-oriented protocol, Send will block until the requested number of bytes are sent, unless a time-out was set by using Socket.SendTimeout. Wenn der Timeout Wert überschritten wurde, löst der Send Aufruf einen aus SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus wird Send möglicherweise auch dann erfolgreich abgeschlossen, wenn die Anzahl der von Ihnen angeforderten Bytes kleiner ist.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes you request. 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 outgoing data is collected. Ein erfolgreicher Abschluss der- Send 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 Send method means that the underlying system has had room to buffer your data for a network send.

Hinweis

Sie müssen sicherstellen, dass die Größe die maximale Paketgröße des zugrunde liegenden Dienstanbieters nicht überschreitet.You must ensure 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 es Send wird eine ausgelöst SocketException .If it does, the datagram won't be sent and Send will throw a SocketException. 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.

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.

Wichtig

Der erfolgreiche Abschluss eines Sendevorgang weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden.The successful completion of a send does not indicate that the data was successfully delivered. Wenn innerhalb des Transport Systems kein Pufferspeicher verfügbar ist, um die zu übertragenden Daten aufzunehmen, wird der Sendevorgang blockiert, es sei denn, der Socket wurde in den nicht blockierenden Modus versetzt.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Siehe auch

Gilt für:

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

Wichtig

Diese API ist nicht CLS-kompatibel.

CLS-kompatible Alternative
System.Net.Sockets.Socket.Send(Byte[], Int32, SocketFlags)

Sendet den Satz von Puffern in der Liste unter Verwendung der angegebenen Socket an einen verbundenen SocketFlags.Sends the set of buffers in the list to a connected Socket, using the specified 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);
[System.CLSCompliant(false)]
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
[<System.CLSCompliant(false)>]
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

Parameter

buffers
IList<ArraySegment<Byte>>

Eine Liste von ArraySegment<T> vom Typ Byte mit den zu sendenden Daten.A list of ArraySegment<T>s 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.

errorCode
SocketError

Ein SocketError-Objekt, in dem der Socketfehler gespeichert wird.A SocketError object that stores the socket error.

Gibt zurück

Int32

Die Anzahl der an den Socket gesendeten Bytes.The number of bytes sent to the Socket.

Attribute

Ausnahmen

buffers ist null.buffers is null.

buffers ist leer.buffers is empty.

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.

Hinweise

Diese Überladung erfordert mindestens einen Puffer, der die Daten enthält, die Sie senden möchten.This overload requires at least one buffer that contains the data you want to send. Der SocketFlags Standardwert ist 0.The SocketFlags value 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 Connect vor dem Aufrufen dieser Methode aufrufen, oder es Send wird eine ausgelöst SocketException .If you are using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remote Host Verbindung herzustellen, oder verwenden, Accept um eine eingehende Verbindung zu akzeptieren.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die- SendTo Methode verwenden.If you are using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Wenn Sie die-Methode nicht verwenden SendTo , müssen Sie vor jedem-Befehl aufruft Connect Send .If you do not use the SendTo method, you will have to call Connect before each call to Send. Sie können auch dann verwenden, SendTo Wenn Sie einen Standard-Remote Host mit erstellt haben Connect .You can use SendTo even after you have established a default remote host with Connect. Sie können den Standard-Remote Host auch vor dem Aufrufen Send von ändern, indem Sie einen weiteren Aufruf von ausführen Connect .You can also change the default remote host prior to calling Send by making another call to Connect.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, Send wird von blockiert, bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe von festgelegt Socket.SendTimeout .If you are using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Wenn der Timeout Wert überschritten wurde, löst der Send Aufruf einen aus SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. Im Modus, der nicht blockiert wird, wird Send möglicherweise erfolgreich abgeschlossen, auch wenn er weniger als die Anzahl der Bytes im Puffer sendet.In non-blocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. Es ist Aufgabe Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die Bytes im Puffer 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 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- Send 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 Send method means that the underlying system has had room to buffer your data for a network send.

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

Der erfolgreiche Abschluss eines Sendevorgang weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden.The successful completion of a send does not indicate that the data was successfully delivered. Wenn innerhalb des Transport Systems kein Pufferspeicher verfügbar ist, um die zu übertragenden Daten aufzunehmen, wird der Sendevorgang blockiert, es sei denn, der Socket wurde in den nicht blockierenden Modus versetzt.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

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.

Gilt für:

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Sendet Daten mithilfe der angegebenen Socket an einen verbundenen SocketFlags.Sends data to a connected Socket using the specified 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

Parameter

buffer
ReadOnlySpan<Byte>

Eins Spanne von Bytes, die die zu sendenden Daten enthält.A span of bytes that contains the data to be sent.

socketFlags
SocketFlags

Eine bitweise Kombination der Enumerationswerte, die das Sende- und Empfangsverhalten angeben.A bitwise combination of the enumeration values that specifies send and receive behaviors.

errorCode
SocketError

Diese Methode gibt einen der Enumerationswerte zurück, der Fehlercodes für den Socket definiert.When this method returns, contains one of the enumeration values that defines error codes for the socket.

Gibt zurück

Int32

Die Anzahl der an den Socket gesendeten Bytes.The number of bytes sent to the Socket.

Ausnahmen

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.

Hinweise

Send Sendet synchron Daten an den Remote Host, der in der- Connect oder-Methode angegeben ist, Accept und gibt die Anzahl der erfolgreich gesendeten Bytes zurück.Send synchronously sends data to the remote host specified in the Connect or Accept method and returns the number of bytes successfully sent. Send kann sowohl für Verbindungs orientierte als auch für verbindungslose Protokolle verwendet werden.Send can be used for both connection-oriented and connectionless protocols.

Diese Überladung erfordert einen Puffer, der die Daten enthält, die Sie senden möchten.This overload requires a buffer that contains the data you want to send. Der SocketFlags Standardwert ist 0, der Puffer Offset standardmäßig 0 und die Anzahl der zu sendenden Bytes standardmäßig auf die Größe des Puffers.The SocketFlags value defaults to 0, the buffer offset defaults to 0, and the number of bytes to send defaults to the size of the buffer.

Wenn Sie ein verbindungsloses Protokoll verwenden, müssen Sie Connect vor dem Aufrufen dieser Methode aufrufen, oder es Send wird eine ausgelöst SocketException .If you're using a connectionless protocol, you must call Connect before calling this method, or Send will throw a SocketException. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remote Host Verbindung herzustellen, oder verwenden, Accept um eine eingehende Verbindung zu akzeptieren.If you're using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie die- SendTo Methode verwenden.If you're using a connectionless protocol and plan to send data to several different hosts, you should use the SendTo method. Wenn Sie die-Methode nicht verwenden SendTo , müssen Sie Connect vor jedem-Rückruf aufgerufen werden Send .If you don't use the SendTo method, you'll have to call Connect before each call to Send. Sie können auch dann verwenden, SendTo Wenn Sie einen Standard-Remote Host mit erstellt haben Connect .You can use SendTo even after you've established a default remote host with Connect. Sie können den Standard-Remote Host auch vor Aufrufen Send von ändern, indem Sie einen weiteren Aufruf von durchführen Connect .You can also change the default remote host before calling Send by making another call to Connect.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, Send wird von blockiert, bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe von festgelegt Socket.SendTimeout .If you're using a connection-oriented protocol, Send will block until all of the bytes in the buffer are sent, unless a time-out was set by using Socket.SendTimeout. Wenn der Timeout Wert überschritten wurde, löst der Send Aufruf einen aus SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus wird Send möglicherweise auch dann erfolgreich abgeschlossen, wenn der Wert weniger als die Anzahl der Bytes im Puffer sendet.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes in the buffer. Es ist Aufgabe Ihrer Anwendung, die Anzahl der gesendeten Bytes nachzuverfolgen und den Vorgang zu wiederholen, bis die Anwendung die Bytes im Puffer 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 bytes in the buffer. Außerdem gibt es keine Garantie dafür, dass die gesendeten Daten sofort im Netzwerk angezeigt werden.There's 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- Send 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 Send method means that the underlying system has had room to buffer your data for a network send.

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 für Windows Sockets, Version 2 , eine ausführliche Beschreibung des Fehlers.After you've obtained this code, refer to the Windows Sockets version 2 API error code documentation for a detailed description of the error.

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.

Wichtig

Der erfolgreiche Abschluss eines Sendevorgang weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden.The successful completion of a send does not indicate that the data was successfully delivered. Wenn innerhalb des Transport Systems kein Pufferspeicher verfügbar ist, um die zu übertragenden Daten aufzunehmen, wird der Sendevorgang blockiert, es sei denn, der Socket wurde in den nicht blockierenden Modus versetzt.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

Siehe auch

Gilt für:

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

Sendet die angegebene Anzahl von Datenbytes an einen verbundenen Socket, beginnend bei einem angegebenen Offset und unter Verwendung der angegebenen SocketFlags.Sends the specified number of bytes of data to a connected Socket, starting at the specified offset, and using the specified SocketFlags.

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

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.

Gibt zurück

Int32

Die Anzahl der an den Socket gesendeten Bytes.The number of bytes sent to the Socket.

Ausnahmen

buffer ist null.buffer 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.

Beispiele

Im folgenden Codebeispiel wird der Datenpuffer, ein Offset, eine Größe und das SocketFlags Senden von Daten an einen verbundenen angegeben Socket .The following code example specifies the data buffer, an offset, a size, and SocketFlags for sending data to a connected 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, 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);
        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

Hinweise

Send Sendet synchron Daten an den Remote Host, der in der- Connect oder-Methode angegeben ist, Accept und gibt die Anzahl der erfolgreich gesendeten Bytes zurück.Send synchronously sends data to the remote host specified in the Connect or Accept method and returns the number of bytes successfully sent. Send kann sowohl für Verbindungs orientierte als auch für verbindungslose Protokolle verwendet werden.Send can be used for both connection-oriented and connectionless protocols.

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 Connect vor dem Aufrufen dieser Methode aufrufen, oder es Send wird eine ausgelöst SocketException .If you are using a connectionless protocol, you must call Connect before calling this method or Send will throw a SocketException. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remote Host Verbindung herzustellen, oder verwenden, Accept um eine eingehende Verbindung zu akzeptieren.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie verwenden SendTo .If you are using a connectionless protocol and plan to send data to several different hosts, you should use SendTo. Wenn Sie nicht verwenden SendTo , müssen Sie Connect vor jedem-Aufrufvorgang aufzurufen Send .If you do not use SendTo, you will have to call Connect before each call to Send. Es ist in Ordnung, auch dann zu verwenden, SendTo Wenn Sie einen Standard-Remote Host mit erstellt haben Connect .It is okay to use SendTo even after you have established a default remote host with Connect. Sie können den Standard-Remote Host auch vor dem Aufrufen Send von ändern, indem Sie einen weiteren Aufruf von ausführen Connect .You can also change the default remote host prior to calling Send by making another call to Connect.

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 es Send wird eine ausgelöst SocketException .If it does, the datagram will not be sent and Send will throw a SocketException.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, Send wird von blockiert, bis die angeforderte Anzahl von Bytes gesendet wird, es sei denn, ein Timeout wurde mithilfe von festgelegt Socket.SendTimeout .If you are using a connection-oriented protocol, Send will block until the requested number of bytes are sent, unless a time-out was set by using Socket.SendTimeout. Wenn der Timeout Wert überschritten wurde, löst der Send Aufruf einen aus SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus wird Send möglicherweise auch dann erfolgreich abgeschlossen, wenn die Anzahl der von Ihnen angeforderten Bytes kleiner ist.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes you request. 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 outgoing data is collected. Ein erfolgreicher Abschluss der- Send 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 Send method means that the underlying system has had room to buffer your data for a network send.

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

Der erfolgreiche Abschluss eines Sendevorgang weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden.The successful completion of a send does not indicate that the data was successfully delivered. Wenn innerhalb des Transport Systems kein Pufferspeicher verfügbar ist, um die zu übertragenden Daten aufzunehmen, wird der Sendevorgang blockiert, es sei denn, der Socket wurde in den nicht blockierenden Modus versetzt.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

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:

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

Sendet unter Verwendung der angegebenen Socket die angegebene Anzahl von Datenbytes an einen verbundenen SocketFlags, beginnend beim angegebenen Offset.Sends the specified number of bytes of data to a connected Socket, starting at the specified offset, and using the specified SocketFlags

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

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.

errorCode
SocketError

Ein SocketError-Objekt, in dem der Socketfehler gespeichert wird.A SocketError object that stores the socket error.

Gibt zurück

Int32

Die Anzahl der an den Socket gesendeten Bytes.The number of bytes sent to the Socket.

Ausnahmen

buffer ist null.buffer 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.

Beispiele

Im folgenden Codebeispiel wird der Datenpuffer, ein Offset, eine Größe und das SocketFlags Senden von Daten an einen verbundenen angegeben Socket .The following code example specifies the data buffer, an offset, a size, and SocketFlags for sending data to a connected 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, 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);
        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

Hinweise

Send Sendet synchron Daten an den Remote Host, der in der- Connect oder-Methode angegeben ist, Accept und gibt die Anzahl der erfolgreich gesendeten Bytes zurück.Send synchronously sends data to the remote host specified in the Connect or Accept method and returns the number of bytes successfully sent. Send kann sowohl für Verbindungs orientierte als auch für verbindungslose Protokolle verwendet werden.Send can be used for both connection-oriented and connectionless protocols.

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 Connect vor dem Aufrufen dieser Methode aufrufen, oder es Send wird eine ausgelöst SocketException .If you are using a connectionless protocol, you must call Connect before calling this method or Send will throw a SocketException. Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, müssen Sie entweder verwenden Connect , um eine Remote Host Verbindung herzustellen, oder verwenden, Accept um eine eingehende Verbindung zu akzeptieren.If you are using a connection-oriented protocol, you must either use Connect to establish a remote host connection, or use Accept to accept an incoming connection.

Wenn Sie ein verbindungsloses Protokoll verwenden und planen, Daten an mehrere verschiedene Hosts zu senden, sollten Sie verwenden SendTo .If you are using a connectionless protocol and plan to send data to several different hosts, you should use SendTo. Wenn Sie nicht verwenden SendTo , müssen Sie Connect vor jedem-Aufrufvorgang aufzurufen Send .If you do not use SendTo, you will have to call Connect before each call to Send. Es ist in Ordnung, auch dann zu verwenden, SendTo Wenn Sie einen Standard-Remote Host mit erstellt haben Connect .It is okay to use SendTo even after you have established a default remote host with Connect. Sie können den Standard-Remote Host auch vor dem Aufrufen Send von ändern, indem Sie einen weiteren Aufruf von ausführen Connect .You can also change the default remote host prior to calling Send by making another call to Connect.

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 es Send wird eine ausgelöst SocketException .If it does, the datagram will not be sent and Send will throw a SocketException.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, Send wird von blockiert, bis die angeforderte Anzahl von Bytes gesendet wird, es sei denn, ein Timeout wurde mithilfe von festgelegt Socket.SendTimeout .If you are using a connection-oriented protocol, Send will block until the requested number of bytes are sent, unless a time-out was set by using Socket.SendTimeout. Wenn der Timeout Wert überschritten wurde, löst der Send Aufruf einen aus SocketException .If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus wird Send möglicherweise auch dann erfolgreich abgeschlossen, wenn die Anzahl der von Ihnen angeforderten Bytes kleiner ist.In nonblocking mode, Send may complete successfully even if it sends less than the number of bytes you request. 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 outgoing data is collected. Ein erfolgreicher Abschluss der- Send 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 Send method means that the underlying system has had room to buffer your data for a network send.

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

Der erfolgreiche Abschluss eines Sendevorgang weist nicht darauf hin, dass die Daten erfolgreich übermittelt wurden.The successful completion of a send does not indicate that the data was successfully delivered. Wenn innerhalb des Transport Systems kein Pufferspeicher verfügbar ist, um die zu übertragenden Daten aufzunehmen, wird der Sendevorgang blockiert, es sei denn, der Socket wurde in den nicht blockierenden Modus versetzt.If no buffer space is available within the transport system to hold the data to be transmitted, send will block unless the socket has been placed in nonblocking mode.

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: