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

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 Socketveranschaulicht.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 synchron Daten an den Remote Host sendet, der in der Connect-oder Accept-Methode angegeben ist, 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 können 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 Wert ist standardmäßig 0, der Puffer Offset ist standardmäßig auf 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 aufrufen, bevor Sie diese Methode aufrufen, oder Send eine SocketExceptionauslösen.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 Connect verwenden, um eine Remote Host Verbindung herzustellen, oder Accept verwenden, 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 SendTo-Methode nicht verwenden, müssen Sie Connect vor jedem-aufrufbefehl Sendabrufen.If you do not use the SendTo method, you will have to call Connect before each call to Send. Sie können SendTo auch dann verwenden, wenn Sie einen Standard-Remote Host mit Connecteingerichtet haben.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 von Send ändern, indem Sie Connecteinen weiteren Aufruf ausführen.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, wird Send blockiert, bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutfestgelegt.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 eine SocketExceptionaus.If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus können Send erfolgreich abgeschlossen werden, auch wenn Sie 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

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

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 können 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 aufrufen, bevor Sie diese Methode aufrufen, oder Send eine SocketExceptionauslösen.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 Connect verwenden, um eine Remote Host Verbindung herzustellen, oder Accept verwenden, 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 SendTo-Methode nicht verwenden, müssen Sie Connect vor jedem-aufrufbefehl Sendabrufen.If you do not use the SendTo method, you will have to call Connect before each call to Send. Sie können SendTo auch dann verwenden, wenn Sie einen Standard-Remote Host mit Connecteingerichtet haben.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 von Send ändern, indem Sie Connecteinen weiteren Aufruf ausführen.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, wird Send blockiert, bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutfestgelegt.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 eine SocketExceptionaus.If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus können Send erfolgreich abgeschlossen werden, auch wenn Sie 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.

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

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 synchron Daten an den Remote Host sendet, der in der Connect-oder Accept-Methode angegeben ist, 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 können 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 Wert ist standardmäßig 0, der Puffer Offset ist standardmäßig auf 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 aufrufen, bevor Sie diese Methode aufrufen, oder Send eine SocketExceptionauslösen.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 Connect verwenden, um eine Remote Host Verbindung herzustellen, oder Accept verwenden, 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 nicht verwenden, müssen Sie Connect vor jedem-aufrufbefehl Sendabrufen.If you don't use the SendTo method, you'll have to call Connect before each call to Send. Sie können SendTo auch dann verwenden, wenn Sie einen Standard-Remote Host mit Connecteingerichtet haben.You can use SendTo even after you have established a default remote host with Connect. Sie können den Standard-Remote Host auch ändern, bevor Sie Send aufrufen, indem Sie Connecteinen weiteren Aufruf ausführen.You can also change the default remote host before calling Send by making another call to Connect.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, wird Send blockiert, bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutfestgelegt.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 eine SocketExceptionaus.If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus können Send erfolgreich abgeschlossen werden, auch wenn Sie 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

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

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

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 Socketveranschaulicht.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 synchron Daten an den Remote Host sendet, der in der Connect-oder Accept-Methode eingerichtet wurde, 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 aus 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 aufrufen, bevor Sie diese Methode aufrufen, oder Send eine SocketExceptionauslösen.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 Connect verwenden, um eine Remote Host Verbindung herzustellen, oder Accept verwenden, 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 SendTo-Methode nicht verwenden, müssen Sie die Connect-Methode vor jedem-Befehl Sendabrufen.If you do not use the SendTo method, you will have to call the Connect method before each call to Send. Sie können SendTo auch dann verwenden, wenn Sie einen Standard-Remote Host mit Connecteingerichtet haben.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 von Send ändern, indem Sie Connecteinen weiteren Aufruf ausführen.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, wird Send blockiert, bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutfestgelegt.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 eine SocketExceptionaus.If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus können Send erfolgreich abgeschlossen werden, auch wenn Sie 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 Send löst eine SocketExceptionaus.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

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

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

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 Wert ist standardmäßig 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 aufrufen, bevor Sie diese Methode aufrufen, oder Send eine SocketExceptionauslösen.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 Connect verwenden, um eine Remote Host Verbindung herzustellen, oder Accept verwenden, 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 SendTo-Methode nicht verwenden, müssen Sie Connect vor jedem-aufrufbefehl Sendabrufen.If you do not use the SendTo method, you will have to call Connect before each call to Send. Sie können SendTo auch dann verwenden, wenn Sie einen Standard-Remote Host mit Connecteingerichtet haben.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 von Send ändern, indem Sie Connecteinen weiteren Aufruf ausführen.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, wird Send blockiert, bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutfestgelegt.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 eine SocketExceptionaus.If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus 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.

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

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

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

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

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

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

Im folgenden Codebeispiel werden die in buffer gefundenen Daten gesendet und None für SocketFlagsangegeben.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 synchron Daten an den Remote Host sendet, der in der Connect-oder Accept-Methode eingerichtet wurde, 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 können 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 aus beliebigen 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 aufrufen, bevor Sie diese Methode aufrufen, oder Send eine SocketExceptionauslösen.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 Connect verwenden, um eine Remote Host Verbindung herzustellen, oder Accept verwenden, 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 nicht mehr benötigen, müssen Sie vor jedem Aufrufen der Send-Methode die Connect-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 SendTo auch dann verwenden, wenn Sie einen Standard-Remote Host mit Connecteingerichtet haben.You can use SendTo even after you've established a default remote host with Connect. Sie können den Standard-Remote Host auch ändern, bevor Sie Send aufrufen, indem Sie Connecteinen weiteren Aufruf ausführen.You can also change the default remote host before calling Send by making another call to Connect.

Bei einem Verbindungs orientierten Protokoll wird Send blockiert, bis die angeforderte Anzahl von Bytes gesendet wird, es sei denn, ein Timeout wurde mit Socket.SendTimeoutfestgelegt.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 eine SocketExceptionaus.If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus können Send erfolgreich abgeschlossen werden, auch wenn Sie weniger als die Anzahl der von Ihnen angeforderten Bytes sendet.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 Send löst eine SocketExceptionaus.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

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);
[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

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

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 Wert ist standardmäßig 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 aufrufen, bevor Sie diese Methode aufrufen, oder Send eine SocketExceptionauslösen.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 Connect verwenden, um eine Remote Host Verbindung herzustellen, oder Accept verwenden, 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 SendTo-Methode nicht verwenden, müssen Sie Connect vor jedem-aufrufbefehl Sendabrufen.If you do not use the SendTo method, you will have to call Connect before each call to Send. Sie können SendTo auch dann verwenden, wenn Sie einen Standard-Remote Host mit Connecteingerichtet haben.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 von Send ändern, indem Sie Connecteinen weiteren Aufruf ausführen.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, wird Send blockiert, bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutfestgelegt.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 eine SocketExceptionaus.If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus 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.

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

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

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 synchron Daten an den Remote Host sendet, der in der Connect-oder Accept-Methode angegeben ist, 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 können 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 Wert ist standardmäßig 0, der Puffer Offset ist standardmäßig auf 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 aufrufen, bevor Sie diese Methode aufrufen, oder Send eine SocketExceptionauslösen.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 Connect verwenden, um eine Remote Host Verbindung herzustellen, oder Accept verwenden, 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 nicht verwenden, müssen Sie Connect vor jedem-aufrufbefehl Sendabrufen.If you don't use the SendTo method, you'll have to call Connect before each call to Send. Sie können SendTo auch dann verwenden, wenn Sie einen Standard-Remote Host mit Connecteingerichtet haben.You can use SendTo even after you've established a default remote host with Connect. Sie können den Standard-Remote Host auch ändern, bevor Sie Send aufrufen, indem Sie Connecteinen weiteren Aufruf ausführen.You can also change the default remote host before calling Send by making another call to Connect.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, wird Send blockiert, bis alle Bytes im Puffer gesendet werden, es sei denn, ein Timeout wurde mithilfe Socket.SendTimeoutfestgelegt.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 eine SocketExceptionaus.If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus können Send erfolgreich abgeschlossen werden, auch wenn Sie 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

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

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

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 werden der Datenpuffer, ein Offset, eine Größe und SocketFlags für das Senden von Daten an eine verbundene Socketangegeben.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 synchron Daten an den Remote Host sendet, der in der Connect-oder Accept-Methode angegeben ist, 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 können 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 aufrufen, bevor Sie diese Methode aufrufen, oder Send eine SocketExceptionauslösen.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 Connect verwenden, um eine Remote Host Verbindung herzustellen, oder Accept verwenden, 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 SendToverwenden.If you are using a connectionless protocol and plan to send data to several different hosts, you should use SendTo. Wenn Sie SendTonicht verwenden, müssen Sie Connect vor jedem-aufrufbefehl Sendabrufen.If you do not use SendTo, you will have to call Connect before each call to Send. Es ist in Ordnung, SendTo auch dann zu verwenden, wenn Sie einen Standard-Remote Host mit Connecteingerichtet haben.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 von Send ändern, indem Sie Connecteinen weiteren Aufruf ausführen.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 Send löst eine SocketExceptionaus.If it does, the datagram will not be sent and Send will throw a SocketException.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, wird Send blockiert, bis die angeforderte Anzahl von Bytes gesendet wird, es sei denn, ein Timeout wurde mit Socket.SendTimeoutfestgelegt.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 eine SocketExceptionaus.If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus können Send erfolgreich abgeschlossen werden, auch wenn Sie weniger als die Anzahl der von Ihnen angeforderten Bytes sendet.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

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

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

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 werden der Datenpuffer, ein Offset, eine Größe und SocketFlags für das Senden von Daten an eine verbundene Socketangegeben.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 synchron Daten an den Remote Host sendet, der in der Connect-oder Accept-Methode angegeben ist, 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 können 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 aufrufen, bevor Sie diese Methode aufrufen, oder Send eine SocketExceptionauslösen.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 Connect verwenden, um eine Remote Host Verbindung herzustellen, oder Accept verwenden, 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 SendToverwenden.If you are using a connectionless protocol and plan to send data to several different hosts, you should use SendTo. Wenn Sie SendTonicht verwenden, müssen Sie Connect vor jedem-aufrufbefehl Sendabrufen.If you do not use SendTo, you will have to call Connect before each call to Send. Es ist in Ordnung, SendTo auch dann zu verwenden, wenn Sie einen Standard-Remote Host mit Connecteingerichtet haben.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 von Send ändern, indem Sie Connecteinen weiteren Aufruf ausführen.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 Send löst eine SocketExceptionaus.If it does, the datagram will not be sent and Send will throw a SocketException.

Wenn Sie ein Verbindungs orientiertes Protokoll verwenden, wird Send blockiert, bis die angeforderte Anzahl von Bytes gesendet wird, es sei denn, ein Timeout wurde mit Socket.SendTimeoutfestgelegt.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 eine SocketExceptionaus.If the time-out value was exceeded, the Send call will throw a SocketException. Im nicht blockierenden Modus können Send erfolgreich abgeschlossen werden, auch wenn Sie weniger als die Anzahl der von Ihnen angeforderten Bytes sendet.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: