Socket.Send Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Invia dati a un oggetto connesso Socket.
Overload
| Nome | Descrizione |
|---|---|
| Send(ReadOnlySpan<Byte>, SocketFlags, SocketError) |
Invia i dati a un oggetto connesso Socket utilizzando l'oggetto specificato SocketFlags. |
| Send(ReadOnlySpan<Byte>) |
Invia dati a un oggetto connesso Socket. |
| Send(Byte[], Int32, Int32, SocketFlags, SocketError) |
Invia il numero specificato di byte di dati a un oggetto connesso Socket, a partire dall'offset specificato e utilizzando l'oggetto specificato SocketFlags. |
| Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError) |
Invia il set di buffer nell'elenco a un oggetto connesso Socketusando l'oggetto specificato SocketFlags. |
| Send(Byte[], Int32, Int32, SocketFlags) |
Invia il numero specificato di byte di dati a un oggetto connesso Socket, a partire dall'offset specificato e utilizzando l'oggetto specificato SocketFlags. |
| Send(Byte[], Int32, SocketFlags) |
Invia il numero specificato di byte di dati a un oggetto connesso Socketutilizzando l'oggetto specificato SocketFlags. |
| Send(IList<ArraySegment<Byte>>) |
Invia il set di buffer nell'elenco a un oggetto connesso Socket. |
| Send(IList<ArraySegment<Byte>>, SocketFlags) |
Invia il set di buffer nell'elenco a un oggetto connesso Socketusando l'oggetto specificato SocketFlags. |
| Send(Byte[], SocketFlags) |
Invia i dati a un oggetto connesso Socket utilizzando l'oggetto specificato SocketFlags. |
| Send(ReadOnlySpan<Byte>, SocketFlags) |
Invia i dati a un oggetto connesso Socket utilizzando l'oggetto specificato SocketFlags. |
| Send(Byte[]) |
Invia dati a un oggetto connesso Socket. |
Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Invia i dati a un oggetto connesso Socket utilizzando l'oggetto specificato 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
Parametri
- buffer
- ReadOnlySpan<Byte>
Intervallo di byte che contiene i dati da inviare.
- socketFlags
- SocketFlags
Combinazione bit per bit dei valori di enumerazione che specifica i comportamenti di invio e ricezione.
- errorCode
- SocketError
Quando termina, questo metodo contiene uno dei valori di enumerazione che definisce i codici di errore per il socket.
Restituisce
Numero di byte inviati all'oggetto Socket.
Eccezioni
Si è verificato un errore durante il tentativo di accesso al socket.
L'oggetto Socket è stato chiuso.
Commenti
Send Invia in modo sincrono i dati all'host remoto specificato nel Connect metodo o Accept e restituisce il numero di byte inviati correttamente. Send può essere usato sia per i protocolli orientati alla connessione che per i protocolli senza connessione.
Questo overload richiede un buffer contenente i dati da inviare. Il SocketFlags valore predefinito è 0, l'offset del buffer viene impostato su 0 e il numero di byte da inviare per impostazione predefinita alle dimensioni del buffer.
Se si usa un protocollo senza connessione, è necessario chiamare prima di chiamare Connect questo metodo o Send generare un'eccezione SocketException. Se si usa un protocollo orientato alla connessione, è necessario usare Connect per stabilire una connessione host remota o usare Accept per accettare una connessione in ingresso.
Se si usa un protocollo senza connessione e si prevede di inviare dati a diversi host, è consigliabile usare il SendTo metodo . Se non si usa il SendTo metodo , sarà necessario chiamare Connect prima di ogni chiamata a Send. È possibile usare SendTo anche dopo aver stabilito un host remoto predefinito con Connect. È anche possibile modificare l'host remoto predefinito prima di chiamare Send effettuando un'altra chiamata a Connect.
Se si usa un protocollo orientato alla connessione, Send si blocca fino a quando non vengono inviati tutti i byte nel buffer, a meno che non sia stato impostato un timeout tramite Socket.SendTimeout. Se il valore di timeout è stato superato, la Send chiamata genererà .SocketException In modalità non di blocco, Send può essere completato correttamente anche se invia meno del numero di byte nel buffer. È responsabilità dell'applicazione tenere traccia del numero di byte inviati e ripetere l'operazione fino a quando l'applicazione non invia i byte nel buffer. Non esiste inoltre alcuna garanzia che i dati inviati vengano visualizzati immediatamente sulla rete. Per aumentare l'efficienza della rete, il sistema sottostante può ritardare la trasmissione fino a quando non viene raccolta una quantità significativa di dati in uscita. Un completamento corretto del Send metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Annotazioni
Se si riceve un oggetto SocketException, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.
Questo membro restituisce informazioni di traccia quando si abilita la traccia di rete nell'applicazione. Per altre informazioni, vedere Traccia di rete in .NET Framework.
Importante
Il completamento di un invio non indica che i dati sono stati recapitati correttamente. Se non è disponibile spazio buffer all'interno del sistema di trasporto per contenere i dati da trasmettere, l'invio bloccherà a meno che il socket non sia stato inserito in modalità di blocco.
Vedi anche
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Si applica a
Send(ReadOnlySpan<Byte>)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Invia dati a un oggetto connesso 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
Parametri
- buffer
- ReadOnlySpan<Byte>
Intervallo di byte che contiene i dati da inviare.
Restituisce
Numero di byte inviati all'oggetto Socket.
Eccezioni
Si è verificato un errore durante il tentativo di accesso al socket.
L'oggetto Socket è stato chiuso.
Commenti
Send Invia in modo sincrono i dati all'host remoto specificato nel Connect metodo o Accept e restituisce il numero di byte inviati correttamente. Send può essere usato sia per i protocolli orientati alla connessione che per i protocolli senza connessione.
Questo overload richiede un buffer contenente i dati da inviare. Il SocketFlags valore predefinito è 0, l'offset del buffer viene impostato su 0 e il numero di byte da inviare per impostazione predefinita alle dimensioni del buffer.
Se si usa un protocollo senza connessione, è necessario chiamare prima di chiamare Connect questo metodo o Send generare un'eccezione SocketException. Se si usa un protocollo orientato alla connessione, è necessario usare Connect per stabilire una connessione host remota o usare Accept per accettare una connessione in ingresso.
Se si usa un protocollo senza connessione e si prevede di inviare dati a diversi host, è consigliabile usare il SendTo metodo . Se non si usa il SendTo metodo , sarà necessario chiamare Connect prima di ogni chiamata a Send. È possibile usare SendTo anche dopo aver stabilito un host remoto predefinito con Connect. È anche possibile modificare l'host remoto predefinito prima di chiamare Send effettuando un'altra chiamata a Connect.
Se si usa un protocollo orientato alla connessione, Send si blocca fino a quando non vengono inviati tutti i byte nel buffer, a meno che non sia stato impostato un timeout tramite Socket.SendTimeout. Se il valore di timeout è stato superato, la Send chiamata genererà .SocketException In modalità non di blocco, Send può essere completato correttamente anche se invia meno del numero di byte nel buffer. È responsabilità dell'applicazione tenere traccia del numero di byte inviati e ripetere l'operazione fino a quando l'applicazione non invia i byte nel buffer. Non esiste inoltre alcuna garanzia che i dati inviati vengano visualizzati immediatamente sulla rete. Per aumentare l'efficienza della rete, il sistema sottostante può ritardare la trasmissione fino a quando non viene raccolta una quantità significativa di dati in uscita. Un completamento corretto del Send metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Annotazioni
Se si riceve un oggetto SocketException, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.
Questo membro restituisce informazioni di traccia quando si abilita la traccia di rete nell'applicazione. Per altre informazioni, vedere Traccia di rete in .NET Framework.
Importante
Il completamento di un invio non indica che i dati sono stati recapitati correttamente. Se non è disponibile spazio buffer all'interno del sistema di trasporto per contenere i dati da trasmettere, l'invio bloccherà a meno che il socket non sia stato inserito in modalità di blocco.
Vedi anche
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Si applica a
Send(Byte[], Int32, Int32, SocketFlags, SocketError)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Invia il numero specificato di byte di dati a un oggetto connesso Socket, a partire dall'offset specificato e utilizzando l'oggetto specificato 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
Parametri
- offset
- Int32
Posizione nel buffer di dati in corrispondenza della quale iniziare l'invio di dati.
- size
- Int32
Numero di byte da inviare.
- socketFlags
- SocketFlags
Combinazione bit per bit dei SocketFlags valori.
- errorCode
- SocketError
Oggetto SocketError che archivia l'errore socket.
Restituisce
Numero di byte inviati all'oggetto Socket.
Eccezioni
buffer è null.
offset è minore di 0.
oppure
offset è maggiore della lunghezza di buffer.
oppure
size è minore di 0.
oppure
size è maggiore della lunghezza di buffer meno il valore del offset parametro.
socketFlags non è una combinazione valida di valori.
oppure
Si verifica un errore del sistema operativo durante l'accesso a Socket.
L'oggetto Socket è stato chiuso.
Esempio
Nell'esempio di codice seguente viene specificato il buffer di dati, un offset, una dimensione e SocketFlags l'invio di dati a un oggetto connesso Socket.
// 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, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
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
Commenti
Send Invia in modo sincrono i dati all'host remoto specificato nel Connect metodo o Accept e restituisce il numero di byte inviati correttamente. Send può essere usato sia per i protocolli orientati alla connessione che per i protocolli senza connessione.
In questo overload, se si specifica il DontRoute flag come socketflags parametro, i dati inviati non verranno instradati.
Se si usa un protocollo senza connessione, è necessario chiamare prima di chiamare Connect questo metodo o Send generare un'eccezione SocketException. Se si usa un protocollo orientato alla connessione, è necessario usare Connect per stabilire una connessione host remota o per Accept accettare una connessione in ingresso.
Se si usa un protocollo senza connessione e si prevede di inviare dati a diversi host, è consigliabile usare SendTo. Se non si usa SendTo, sarà necessario chiamare Connect prima di ogni chiamata a Send. È possibile usare SendTo anche dopo aver stabilito un host remoto predefinito con Connect. È anche possibile modificare l'host remoto predefinito prima di chiamare Send effettuando un'altra chiamata a Connect.
È inoltre necessario assicurarsi che le dimensioni non superino le dimensioni massime del pacchetto del provider di servizi sottostante. In caso affermativo, il datagramma non verrà inviato e Send genererà un'eccezione SocketException.
Se si usa un protocollo orientato alla connessione, Send verrà bloccato fino all'invio del numero di byte richiesto, a meno che non sia stato impostato un timeout tramite Socket.SendTimeout. Se il valore di timeout è stato superato, la Send chiamata genererà .SocketException In modalità non bloccante, Send può essere completato correttamente anche se invia meno del numero di byte richiesto. È responsabilità dell'applicazione tenere traccia del numero di byte inviati e ripetere l'operazione fino a quando l'applicazione non invia il numero di byte richiesto. Non esiste inoltre alcuna garanzia che i dati inviati vengano visualizzati immediatamente sulla rete. Per aumentare l'efficienza della rete, il sistema sottostante può ritardare la trasmissione fino a quando non viene raccolta una quantità significativa di dati in uscita. Un completamento corretto del Send metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Annotazioni
Se si riceve un oggetto SocketException, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.
Annotazioni
Il completamento di un invio non indica che i dati sono stati recapitati correttamente. Se non è disponibile spazio buffer all'interno del sistema di trasporto per contenere i dati da trasmettere, l'invio bloccherà a meno che il socket non sia stato inserito in modalità di blocco.
Annotazioni
Questo membro restituisce informazioni di traccia quando si abilita la traccia di rete nell'applicazione. Per altre informazioni, vedere Traccia di rete in .NET Framework.
Vedi anche
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Si applica a
Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Invia il set di buffer nell'elenco a un oggetto connesso Socketusando l'oggetto specificato 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);
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
Parametri
- buffers
- IList<ArraySegment<Byte>>
Elenco di ArraySegment<T>tipi Byte che contiene i dati da inviare.
- socketFlags
- SocketFlags
Combinazione bit per bit dei SocketFlags valori.
- errorCode
- SocketError
Oggetto SocketError che archivia l'errore socket.
Restituisce
Numero di byte inviati all'oggetto Socket.
Eccezioni
buffers è null.
buffers è vuoto.
Si è verificato un errore durante il tentativo di accesso al socket.
L'oggetto Socket è stato chiuso.
Commenti
Questo overload richiede almeno un buffer contenente i dati da inviare. Il SocketFlags valore predefinito è 0. Se si specifica il DontRoute flag come socketFlags parametro, i dati inviati non verranno instradati.
Se si usa un protocollo senza connessione, è necessario chiamare prima di chiamare Connect questo metodo o Send generare un'eccezione SocketException. Se si usa un protocollo orientato alla connessione, è necessario usare Connect per stabilire una connessione host remota o per Accept accettare una connessione in ingresso.
Se si usa un protocollo senza connessione e si prevede di inviare dati a diversi host, è consigliabile usare il SendTo metodo . Se non si usa il SendTo metodo , sarà necessario chiamare Connect prima di ogni chiamata a Send. È possibile usare SendTo anche dopo aver stabilito un host remoto predefinito con Connect. È anche possibile modificare l'host remoto predefinito prima di chiamare Send effettuando un'altra chiamata a Connect.
Se si usa un protocollo orientato alla connessione, Send si blocca fino a quando non vengono inviati tutti i byte nel buffer, a meno che non sia stato impostato un timeout tramite Socket.SendTimeout. Se il valore di timeout è stato superato, la Send chiamata genererà .SocketException In modalità non di blocco, Send può essere completato correttamente anche se invia meno del numero di byte nel buffer. È responsabilità dell'applicazione tenere traccia del numero di byte inviati e ripetere l'operazione fino a quando l'applicazione non invia i byte nel buffer. Non esiste inoltre alcuna garanzia che i dati inviati vengano visualizzati immediatamente sulla rete. Per aumentare l'efficienza della rete, il sistema sottostante può ritardare la trasmissione fino a quando non viene raccolta una quantità significativa di dati in uscita. Un completamento corretto del Send metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Annotazioni
Se si riceve un oggetto SocketException, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.
Annotazioni
Il completamento di un invio non indica che i dati sono stati recapitati correttamente. Se non è disponibile spazio buffer all'interno del sistema di trasporto per contenere i dati da trasmettere, l'invio bloccherà a meno che il socket non sia stato inserito in modalità di blocco.
Annotazioni
Questo membro restituisce informazioni di traccia quando si abilita la traccia di rete nell'applicazione. Per altre informazioni, vedere Traccia di rete in .NET Framework.
Si applica a
Send(Byte[], Int32, Int32, SocketFlags)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Invia il numero specificato di byte di dati a un oggetto connesso Socket, a partire dall'offset specificato e utilizzando l'oggetto specificato 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
Parametri
- offset
- Int32
Posizione nel buffer di dati in corrispondenza della quale iniziare l'invio di dati.
- size
- Int32
Numero di byte da inviare.
- socketFlags
- SocketFlags
Combinazione bit per bit dei SocketFlags valori.
Restituisce
Numero di byte inviati all'oggetto Socket.
Eccezioni
buffer è null.
offset è minore di 0.
oppure
offset è maggiore della lunghezza di buffer.
oppure
size è minore di 0.
oppure
size è maggiore della lunghezza di buffer meno il valore del offset parametro.
socketFlags non è una combinazione valida di valori.
oppure
Si verifica un errore del sistema operativo durante l'accesso a Socket.
L'oggetto Socket è stato chiuso.
Esempio
Nell'esempio di codice seguente viene specificato il buffer di dati, un offset, una dimensione e SocketFlags l'invio di dati a un oggetto connesso Socket.
// 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, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
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
Commenti
Send Invia in modo sincrono i dati all'host remoto specificato nel Connect metodo o Accept e restituisce il numero di byte inviati correttamente. Send può essere usato sia per i protocolli orientati alla connessione che per i protocolli senza connessione.
In questo overload, se si specifica il DontRoute flag come socketflags parametro, i dati inviati non verranno instradati.
Se si usa un protocollo senza connessione, è necessario chiamare prima di chiamare Connect questo metodo o Send generare un'eccezione SocketException. Se si usa un protocollo orientato alla connessione, è necessario usare Connect per stabilire una connessione host remota o per Accept accettare una connessione in ingresso.
Se si usa un protocollo senza connessione e si prevede di inviare dati a diversi host, è consigliabile usare SendTo. Se non si usa SendTo, sarà necessario chiamare Connect prima di ogni chiamata a Send. È possibile usare SendTo anche dopo aver stabilito un host remoto predefinito con Connect. È anche possibile modificare l'host remoto predefinito prima di chiamare Send effettuando un'altra chiamata a Connect.
È inoltre necessario assicurarsi che le dimensioni non superino le dimensioni massime del pacchetto del provider di servizi sottostante. In caso affermativo, il datagramma non verrà inviato e Send genererà un'eccezione SocketException.
Se si usa un protocollo orientato alla connessione, Send verrà bloccato fino all'invio del numero di byte richiesto, a meno che non sia stato impostato un timeout tramite Socket.SendTimeout. Se il valore di timeout è stato superato, la Send chiamata genererà .SocketException In modalità non bloccante, Send può essere completato correttamente anche se invia meno del numero di byte richiesto. È responsabilità dell'applicazione tenere traccia del numero di byte inviati e ripetere l'operazione fino a quando l'applicazione non invia il numero di byte richiesto. Non esiste inoltre alcuna garanzia che i dati inviati vengano visualizzati immediatamente sulla rete. Per aumentare l'efficienza della rete, il sistema sottostante può ritardare la trasmissione fino a quando non viene raccolta una quantità significativa di dati in uscita. Un completamento corretto del Send metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Annotazioni
Se si riceve un oggetto SocketException, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.
Annotazioni
Il completamento di un invio non indica che i dati sono stati recapitati correttamente. Se non è disponibile spazio buffer all'interno del sistema di trasporto per contenere i dati da trasmettere, l'invio bloccherà a meno che il socket non sia stato inserito in modalità di blocco.
Annotazioni
Questo membro restituisce informazioni di traccia quando si abilita la traccia di rete nell'applicazione. Per altre informazioni, vedere Traccia di rete in .NET Framework.
Vedi anche
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Si applica a
Send(Byte[], Int32, SocketFlags)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Invia il numero specificato di byte di dati a un oggetto connesso Socketutilizzando l'oggetto specificato 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
Parametri
- size
- Int32
Numero di byte da inviare.
- socketFlags
- SocketFlags
Combinazione bit per bit dei SocketFlags valori.
Restituisce
Numero di byte inviati all'oggetto Socket.
Eccezioni
buffer è null.
size è minore di 0 o supera le dimensioni del buffer.
socketFlags non è una combinazione valida di valori.
oppure
Si verifica un errore del sistema operativo durante l'accesso al socket.
L'oggetto Socket è stato chiuso.
Esempio
Nell'esempio di codice seguente vengono inviati i dati trovati nel buffer e viene None specificato per SocketFlags.
// 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, bytes.Length, SocketFlags.None);
if (byteCount > 0)
Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
}
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
Commenti
Send Invia in modo sincrono i dati all'host remoto stabilito nel Connect metodo o Accept e restituisce il numero di byte inviati correttamente. Send può essere usato sia per i protocolli orientati alla connessione che per i protocolli senza connessione.
Questo overload richiede un buffer contenente i dati da inviare, il numero di byte da inviare e una combinazione bit per bit di qualsiasi oggetto SocketFlags. Se si specifica il DontRoute flag come socketflags parametro, i dati inviati non verranno instradati.
Se si usa un protocollo senza connessione, è necessario chiamare prima di chiamare Connect questo metodo o Send generare un'eccezione SocketException. Se si usa un protocollo orientato alla connessione, è necessario usare Connect per stabilire una connessione host remota o usare Accept per accettare una connessione in ingresso.
Se si usa un protocollo senza connessione e si prevede di inviare dati a diversi host, è consigliabile usare il SendTo metodo . Se non si esegue il tuse del SendTo metodo, sarà necessario chiamare il Connect metodo prima di ogni chiamata al Send metodo . È possibile usare SendTo anche dopo aver stabilito un host remoto predefinito con Connect. È anche possibile modificare l'host remoto predefinito prima di chiamare Send effettuando un'altra chiamata a Connect.
Con un protocollo orientato alla connessione, Send bloccherà fino all'invio del numero di byte richiesto, a meno che non sia stato impostato un timeout tramite Socket.SendTimeout. Se il valore di timeout è stato superato, la Send chiamata genererà .SocketException In modalità non bloccante, Send può essere completato correttamente anche se invia meno del numero di byte richiesto. È responsabilità dell'applicazione tenere traccia del numero di byte inviati e ripetere l'operazione fino a quando l'applicazione non invia il numero di byte richiesto. Non esiste inoltre alcuna garanzia che i dati inviati vengano visualizzati immediatamente sulla rete. Per aumentare l'efficienza della rete, il sistema sottostante può ritardare la trasmissione fino a quando non viene raccolta una quantità significativa di dati in uscita. Un completamento corretto del Send metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Annotazioni
È necessario assicurarsi che le dimensioni non superino le dimensioni massime del pacchetto del provider di servizi sottostante. In caso affermativo, il datagramma non verrà inviato e Send genererà un'eccezione SocketException. Se si riceve un oggetto SocketException, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.
Questo membro restituisce informazioni di traccia quando si abilita la traccia di rete nell'applicazione. Per altre informazioni, vedere Traccia di rete in .NET Framework.
Importante
Il completamento di un invio non indica che i dati sono stati recapitati correttamente. Se non è disponibile spazio buffer all'interno del sistema di trasporto per contenere i dati da trasmettere, l'invio bloccherà a meno che il socket non sia stato inserito in modalità di blocco.
Vedi anche
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Si applica a
Send(IList<ArraySegment<Byte>>)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Invia il set di buffer nell'elenco a un oggetto connesso 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
Parametri
- buffers
- IList<ArraySegment<Byte>>
Elenco di ArraySegment<T>tipi Byte che contiene i dati da inviare.
Restituisce
Numero di byte inviati all'oggetto Socket.
Eccezioni
buffers è null.
buffers è vuoto.
Si è verificato un errore durante il tentativo di accesso al socket. Vedere la sezione osservazioni di seguito.
L'oggetto Socket è stato chiuso.
Commenti
Send può essere usato sia per i protocolli orientati alla connessione che per i protocolli senza connessione.
Questo overload richiede almeno un buffer contenente i dati da inviare.
Se si usa un protocollo senza connessione, è necessario chiamare prima di chiamare Connect questo metodo o Send generare un'eccezione SocketException. Se si usa un protocollo orientato alla connessione, è necessario usare Connect per stabilire una connessione host remota o per Accept accettare una connessione in ingresso.
Se si usa un protocollo senza connessione e si prevede di inviare dati a diversi host, è consigliabile usare il SendTo metodo . Se non si usa il SendTo metodo , sarà necessario chiamare Connect prima di ogni chiamata a Send. È possibile usare SendTo anche dopo aver stabilito un host remoto predefinito con Connect. È anche possibile modificare l'host remoto predefinito prima di chiamare Send effettuando un'altra chiamata a Connect.
Se si usa un protocollo orientato alla connessione, Send si blocca fino a quando non vengono inviati tutti i byte nel buffer, a meno che non sia stato impostato un timeout tramite Socket.SendTimeout. Se il valore di timeout è stato superato, la Send chiamata genererà .SocketException In modalità non di blocco, Send può essere completato correttamente anche se invia meno del numero di byte nel buffer. È responsabilità dell'applicazione tenere traccia del numero di byte inviati e ripetere l'operazione fino a quando l'applicazione non invia i byte nel buffer. Non esiste inoltre alcuna garanzia che i dati inviati vengano visualizzati immediatamente sulla rete. Per aumentare l'efficienza della rete, il sistema sottostante può ritardare la trasmissione fino a quando non viene raccolta una quantità significativa di dati in uscita. Un completamento corretto del Send metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Annotazioni
Se si riceve un oggetto SocketException, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.
Annotazioni
Il completamento di un invio non indica che i dati sono stati recapitati correttamente. Se non è disponibile spazio buffer all'interno del sistema di trasporto per contenere i dati da trasmettere, l'invio bloccherà a meno che il socket non sia stato inserito in modalità di blocco.
Annotazioni
Questo membro restituisce informazioni di traccia quando si abilita la traccia di rete nell'applicazione. Per altre informazioni, vedere Traccia di rete in .NET Framework.
Si applica a
Send(IList<ArraySegment<Byte>>, SocketFlags)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Invia il set di buffer nell'elenco a un oggetto connesso Socketusando l'oggetto specificato 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
Parametri
- buffers
- IList<ArraySegment<Byte>>
Elenco di ArraySegment<T>tipi Byte che contiene i dati da inviare.
- socketFlags
- SocketFlags
Combinazione bit per bit dei SocketFlags valori.
Restituisce
Numero di byte inviati all'oggetto Socket.
Eccezioni
buffers è null.
buffers è vuoto.
Si è verificato un errore durante il tentativo di accesso al socket.
L'oggetto Socket è stato chiuso.
Commenti
Questo overload richiede almeno un buffer contenente i dati da inviare. Il SocketFlags valore predefinito è 0. Se si specifica il DontRoute flag come socketFlags parametro, i dati inviati non verranno instradati.
Se si usa un protocollo senza connessione, è necessario chiamare prima di chiamare Connect questo metodo o Send generare un'eccezione SocketException. Se si usa un protocollo orientato alla connessione, è necessario usare Connect per stabilire una connessione host remota o per Accept accettare una connessione in ingresso.
Se si usa un protocollo senza connessione e si prevede di inviare dati a diversi host, è consigliabile usare il SendTo metodo . Se non si usa il SendTo metodo , sarà necessario chiamare Connect prima di ogni chiamata a Send. È possibile usare SendTo anche dopo aver stabilito un host remoto predefinito con Connect. È anche possibile modificare l'host remoto predefinito prima di chiamare Send effettuando un'altra chiamata a Connect.
Se si usa un protocollo orientato alla connessione, Send si blocca fino a quando non vengono inviati tutti i byte nel buffer, a meno che non sia stato impostato un timeout tramite Socket.SendTimeout. Se il valore di timeout è stato superato, la Send chiamata genererà .SocketException In modalità non di blocco, Send può essere completato correttamente anche se invia meno del numero di byte nel buffer. È responsabilità dell'applicazione tenere traccia del numero di byte inviati e ripetere l'operazione fino a quando l'applicazione non invia i byte nel buffer. Non esiste inoltre alcuna garanzia che i dati inviati vengano visualizzati immediatamente sulla rete. Per aumentare l'efficienza della rete, il sistema sottostante può ritardare la trasmissione fino a quando non viene raccolta una quantità significativa di dati in uscita. Un completamento corretto del Send metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Annotazioni
Se si riceve un oggetto SocketException, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.
Annotazioni
Il completamento di un invio non indica che i dati sono stati recapitati correttamente. Se non è disponibile spazio buffer all'interno del sistema di trasporto per contenere i dati da trasmettere, l'invio bloccherà a meno che il socket non sia stato inserito in modalità di blocco.
Annotazioni
Questo membro restituisce informazioni di traccia quando si abilita la traccia di rete nell'applicazione. Per altre informazioni, vedere Traccia di rete in .NET Framework.
Si applica a
Send(Byte[], SocketFlags)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Invia i dati a un oggetto connesso Socket utilizzando l'oggetto specificato 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
Parametri
- socketFlags
- SocketFlags
Combinazione bit per bit dei SocketFlags valori.
Restituisce
Numero di byte inviati all'oggetto Socket.
Eccezioni
buffer è null.
Si è verificato un errore durante il tentativo di accesso al socket.
L'oggetto Socket è stato chiuso.
Esempio
Nell'esempio di codice seguente viene illustrato l'invio di dati su un oggetto connesso Socket.
// 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
Commenti
Send Invia in modo sincrono i dati all'host remoto stabilito nel Connect metodo o Accept e restituisce il numero di byte inviati correttamente. Il Send metodo può essere usato sia per i protocolli orientati alla connessione che per i protocolli senza connessione.
Questo overload richiede un buffer contenente i dati da inviare e una combinazione bit per bit di SocketFlags. L'offset del buffer viene impostato per impostazione predefinita su 0 e il numero di byte da inviare per impostazione predefinita alle dimensioni del buffer. Se si specifica il DontRoute flag come valore del socketflags parametro, i dati inviati non verranno instradati.
Se si usa un protocollo senza connessione, è necessario chiamare prima di chiamare Connect questo metodo o Send generare un'eccezione SocketException. Se si usa un protocollo orientato alla connessione, è necessario usare Connect per stabilire una connessione host remota o per Accept accettare una connessione in ingresso.
Se si usa un protocollo senza connessione e si prevede di inviare dati a diversi host, è consigliabile usare il SendTo metodo . Se non si usa il SendTo metodo , sarà necessario chiamare il Connect metodo prima di ogni chiamata a Send. È possibile usare SendTo anche dopo aver stabilito un host remoto predefinito con Connect. È anche possibile modificare l'host remoto predefinito prima di chiamare Send effettuando un'altra chiamata a Connect.
Se si usa un protocollo orientato alla connessione, Send si blocca fino a quando non vengono inviati tutti i byte nel buffer, a meno che non sia stato impostato un timeout tramite Socket.SendTimeout. Se il valore di timeout è stato superato, la Send chiamata genererà .SocketException In modalità non di blocco, Send può essere completato correttamente anche se invia meno del numero di byte nel buffer. È responsabilità dell'applicazione tenere traccia del numero di byte inviati e ripetere l'operazione fino a quando l'applicazione non invia il numero di byte richiesto. Non esiste inoltre alcuna garanzia che i dati inviati vengano visualizzati immediatamente sulla rete. Per aumentare l'efficienza della rete, il sistema sottostante può ritardare la trasmissione fino a quando non viene raccolta una quantità significativa di dati in uscita. Un completamento corretto del Send metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Annotazioni
È necessario assicurarsi che le dimensioni del buffer non superino le dimensioni massime del pacchetto del provider di servizi sottostante. In caso affermativo, il datagramma non verrà inviato e Send genererà un'eccezione SocketException. Se si riceve un oggetto SocketException, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.
Annotazioni
Il completamento di un invio non indica che i dati sono stati recapitati correttamente. Se non è disponibile spazio buffer all'interno del sistema di trasporto per contenere i dati da trasmettere, l'invio bloccherà a meno che il socket non sia stato inserito in modalità di blocco.
Annotazioni
Questo membro restituisce informazioni di traccia quando si abilita la traccia di rete nell'applicazione. Per altre informazioni, vedere Traccia di rete in .NET Framework.
Vedi anche
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Si applica a
Send(ReadOnlySpan<Byte>, SocketFlags)
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Invia i dati a un oggetto connesso Socket utilizzando l'oggetto specificato 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
Parametri
- buffer
- ReadOnlySpan<Byte>
Intervallo di byte che contiene i dati da inviare.
- socketFlags
- SocketFlags
Combinazione bit per bit dei valori di enumerazione che specifica i comportamenti di invio e ricezione.
Restituisce
Numero di byte inviati all'oggetto Socket.
Eccezioni
Si è verificato un errore durante il tentativo di accesso al socket.
L'oggetto Socket è stato chiuso.
Vedi anche
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
Si applica a
Send(Byte[])
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
- Origine:
- Socket.cs
Invia dati a un oggetto connesso 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
Parametri
Restituisce
Numero di byte inviati all'oggetto Socket.
Eccezioni
buffer è null.
Si è verificato un errore durante il tentativo di accesso al socket.
L'oggetto Socket è stato chiuso.
Esempio
Nell'esempio di codice seguente viene illustrato l'invio di dati su un oggetto connesso Socket.
// 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
Commenti
Send Invia in modo sincrono i dati all'host remoto specificato nel Connect metodo o Accept e restituisce il numero di byte inviati correttamente. Send può essere usato sia per i protocolli orientati alla connessione che per i protocolli senza connessione.
Questo overload richiede un buffer contenente i dati da inviare. Il SocketFlags valore predefinito è 0, l'offset del buffer viene impostato su 0 e il numero di byte da inviare per impostazione predefinita alle dimensioni del buffer.
Se si usa un protocollo senza connessione, è necessario chiamare prima di chiamare Connect questo metodo o Send generare un'eccezione SocketException. Se si usa un protocollo orientato alla connessione, è necessario usare Connect per stabilire una connessione host remota o per Accept accettare una connessione in ingresso.
Se si usa un protocollo senza connessione e si prevede di inviare dati a diversi host, è consigliabile usare il SendTo metodo . Se non si usa il SendTo metodo , sarà necessario chiamare Connect prima di ogni chiamata a Send. È possibile usare SendTo anche dopo aver stabilito un host remoto predefinito con Connect. È anche possibile modificare l'host remoto predefinito prima di chiamare Send effettuando un'altra chiamata a Connect.
Se si usa un protocollo orientato alla connessione, Send si blocca fino a quando non vengono inviati tutti i byte nel buffer, a meno che non sia stato impostato un timeout tramite Socket.SendTimeout. Se il valore di timeout è stato superato, la Send chiamata genererà .SocketException In modalità non di blocco, Send può essere completato correttamente anche se invia meno del numero di byte nel buffer. È responsabilità dell'applicazione tenere traccia del numero di byte inviati e ripetere l'operazione fino a quando l'applicazione non invia i byte nel buffer. Non esiste inoltre alcuna garanzia che i dati inviati vengano visualizzati immediatamente sulla rete. Per aumentare l'efficienza della rete, il sistema sottostante può ritardare la trasmissione fino a quando non viene raccolta una quantità significativa di dati in uscita. Un completamento corretto del Send metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.
Annotazioni
Se si riceve un oggetto SocketException, utilizzare la SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo aver ottenuto questo codice, fare riferimento alla documentazione relativa al codice di errore dell'API Windows Sockets versione 2 per una descrizione dettagliata dell'errore.
Annotazioni
Il completamento di un invio non indica che i dati sono stati recapitati correttamente. Se non è disponibile spazio buffer all'interno del sistema di trasporto per contenere i dati da trasmettere, l'invio bloccherà a meno che il socket non sia stato inserito in modalità di blocco.
Annotazioni
Questo membro restituisce informazioni di traccia quando si abilita la traccia di rete nell'applicazione. Per altre informazioni, vedere Traccia di rete in .NET Framework.
Vedi anche
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)