Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Socket.Receive (Byte[])

 

Data di pubblicazione: ottobre 2016

Riceve dati da un limite Socket in un buffer di ricezione.

Spazio dei nomi:   System.Net.Sockets
Assembly:  System (in System.dll)

public int Receive(
	byte[] buffer
)

Parametri

buffer
Type: System.Byte[]

Matrice di tipo Byte che costituisce la posizione di archiviazione per i dati ricevuti.

Valore restituito

Type: System.Int32

Numero di byte ricevuti.

Exception Condition
ArgumentNullException

buffer è null.

SocketException

Si è verificato un errore durante il tentativo di accesso al socket. Per altre informazioni, vedere la sezione Osservazioni.

ObjectDisposedException

L'oggetto Socket è stato chiuso.

SecurityException

Un chiamante nello stack di chiamate non dispone delle autorizzazioni necessarie.

Il Receive metodo legge i dati nel parametro di buffer e restituisce il numero di byte letti. È possibile chiamare Receive da socket orientati alla connessione e senza connessione.

Questo overload è sufficiente fornire un buffer di ricezione. Il valore predefinito è 0, le impostazioni predefinite di dimensioni per la lunghezza del parametro di buffer, offset del buffer e SocketFlags valore predefinito di None.

Se si utilizza un protocollo orientato alla connessione, è necessario chiamare Connect per stabilire una connessione all'host remoto, o Accept per accettare una connessione in ingresso prima di chiamare Receive. Il Receive metodo leggerà solo i dati provenienti dall'host remoto stabilito nel Connect o Accept (metodo). Se si utilizza un protocollo senza connessione, è inoltre possibile utilizzare il ReceiveFrom metodo. ReceiveFrom Consente di ricevere i dati provenienti da qualsiasi host.

Se non sono disponibili per la lettura, dati il Receive metodo si bloccherà fino a quando non sono disponibili dati, a meno che non sia stato impostato un valore di timeout utilizzando Socket.ReceiveTimeout. Se il valore di timeout viene superato, il Receive chiamata genererà un SocketException. Se si è in modalità non di blocco e non sono presenti dati nel buffer di stack del protocollo, il Receive metodo verrà completato immediatamente e genererà un SocketException. È possibile utilizzare il Available proprietà per determinare se sono disponibili per la lettura dei dati. Quando Available è diverso da zero, quindi ripetere l'operazione di ricezione.

Se si utilizza un orientato alla connessione Socket, Receive metodo leggerà tutti i dati disponibili, fino alle dimensioni del buffer. Se l'host remoto viene arrestato il Socket connessione con il Shutdown (metodo) e tutti i dati disponibili sono stati ricevuti, il Receive metodo verrà completato immediatamente e restituirà zero byte.

Se si utilizza un oggetto senza connessione Socket, Receive leggerà il primo datagramma accodato dall'indirizzo di destinazione specificate nella Connect metodo. Se il datagramma ricevuto è maggiore della dimensione del buffer parametro buffer verrà riempito con la prima parte del messaggio, i dati in eccesso vengono persi e SocketException viene generata un'eccezione.

System_CAPS_noteNota

Se si riceve un SocketException, utilizzare il SocketException.ErrorCode proprietà per ottenere il codice di errore specifico. Dopo avere ottenuto il codice, fare riferimento alla versione di Windows Sockets API errore codice documentazione 2 in MSDN library per una descrizione dettagliata dell'errore.

System_CAPS_noteNota

Questo membro genera informazioni di traccia quando viene abilitata la funzionalità di traccia di rete nell'applicazione in uso. Per altre informazioni, vedere Tracciatura di rete in .NET Framework.

Esempio di codice seguente riceve i dati in un elemento 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;
}

SocketPermission

for accepting connections from the network. Associated enumeration: F:System.Net.NetworkAccess.Accept.

.NET Framework
Disponibile da 1.1
Torna all'inizio
Mostra: