Condividi tramite


Socket.SendTo Metodo

Definizione

Invia dati a un endpoint specifico.

Overload

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

Invia il numero specificato di byte di dati all'endpoint specificato, a partire dalla posizione specificata nel buffer e utilizzando l'oggetto specificato SocketFlags.

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

Invia il numero specificato di byte di dati all'endpoint specificato utilizzando l'oggetto specificato SocketFlags.

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

Invia dati a un endpoint specifico usando l'oggetto specificato SocketFlags.

SendTo(ReadOnlySpan<Byte>, EndPoint)

Invia i dati all'endpoint specificato.

SendTo(Byte[], SocketFlags, EndPoint)

Invia dati a un endpoint specifico usando l'oggetto specificato SocketFlags.

SendTo(Byte[], EndPoint)

Invia i dati all'endpoint specificato.

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

Invia dati a un endpoint specifico usando l'oggetto specificato SocketFlags.

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

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Invia il numero specificato di byte di dati all'endpoint specificato, a partire dalla posizione specificata nel buffer e utilizzando l'oggetto specificato SocketFlags.

public:
 int SendTo(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * int * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint) As Integer

Parametri

buffer
Byte[]

Matrice di tipo Byte che contiene i dati da inviare.

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.

remoteEP
EndPoint

Oggetto EndPoint che rappresenta il percorso di destinazione per i dati.

Restituisce

Numero di byte inviati.

Eccezioni

buffer è null.

oppure

remoteEP è 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.

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

Esempio

Nell'esempio di codice seguente viene inviato un datagramma senza connessione all'host remoto specificato. Offset, dimensione e SocketFlags vengono passati al SendTo metodo .

public static void SendTo4()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint);
    s.Close();
}
Public Shared Sub SendTo4() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, 0, msg.Length, SocketFlags.None, endPoint)
    s.Close()

End Sub

Commenti

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, non è necessario stabilire un host remoto predefinito con il Connect metodo prima di chiamare SendTo. Questa operazione deve essere eseguita solo se si intende chiamare il Send metodo . Se si chiama il Connect metodo prima di chiamare SendTo, il parametro eseguirà l'override remoteEP dell'host remoto predefinito specificato solo per l'operazione di invio. Non è inoltre necessario chiamare il Bind metodo perché il provider di servizi sottostante assegnerà l'indirizzo di rete locale e il numero di porta più appropriati. Se è necessario identificare l'indirizzo di rete locale assegnato e il numero di porta, è possibile usare la LocalEndPoint proprietà al termine del SendTo metodo.

Anche se destinato ai protocolli senza connessione, SendTo funziona anche con protocolli orientati alla connessione. Se si usa un protocollo orientato alla connessione, è prima necessario stabilire una connessione host remota chiamando il Connect metodo o accettando una richiesta di connessione in ingresso usando il Accept metodo . Se non si stabilisce o si accetta una connessione host remota, SendTo genera un'eccezione SocketException. È anche possibile stabilire un host remoto predefinito per un protocollo senza connessione prima di chiamare il SendTo metodo . In uno di questi casi, SendTo ignorerà il remoteEP parametro e invierà solo i dati all'host remoto connesso o predefinito.

I socket di blocco si bloccano fino a quando non viene inviato il numero di byte richiesto. Poiché un blocco non Socket viene completato immediatamente, potrebbe non inviare tutti i byte richiesti in una singola operazione. È responsabilità delle applicazioni 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 SendTo metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.

Se si usa un protocollo senza connessione in modalità di blocco, SendTo si blocca fino all'invio del datagramma. Se si desidera inviare dati a un indirizzo di trasmissione, è prima necessario chiamare il SetSocketOption metodo e impostare l'opzione socket su SocketOptionName.Broadcast. È 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 SendTo genererà un'eccezione SocketException.

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

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

Si applica a

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

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Invia il numero specificato di byte di dati all'endpoint specificato utilizzando l'oggetto specificato SocketFlags.

public:
 int SendTo(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo(byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * int * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), size As Integer, socketFlags As SocketFlags, remoteEP As EndPoint) As Integer

Parametri

buffer
Byte[]

Matrice di tipo Byte che contiene i dati da inviare.

size
Int32

Numero di byte da inviare.

socketFlags
SocketFlags

Combinazione bit per bit dei SocketFlags valori.

remoteEP
EndPoint

Oggetto EndPoint che rappresenta il percorso di destinazione per i dati.

Restituisce

Numero di byte inviati.

Eccezioni

buffer è null.

oppure

remoteEP è null.

L'oggetto specificato size supera le dimensioni di buffer.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Esempio

Nell'esempio di codice seguente viene inviato un datagramma senza connessione all'host remoto specificato. Le dimensioni e SocketFlags vengono passate al SendTo metodo .

public static void SendTo3()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, msg.Length, SocketFlags.None, endPoint);
    s.Close();
}
Public Shared Sub SendTo3() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, msg.Length, SocketFlags.None, endPoint)
    s.Close()

End Sub

Commenti

In questo overload, l'offset del buffer viene impostato su 0. Se si specifica il DontRoute flag come socketflags parametro, i dati inviati non verranno instradati.

Se si usa un protocollo senza connessione, non è necessario stabilire un host remoto predefinito con il Connect metodo prima di chiamare SendTo. Questa operazione deve essere eseguita solo se si intende chiamare il Send metodo . Se si chiama il Connect metodo prima di chiamare SendTo, il parametro eseguirà l'override remoteEP dell'host remoto predefinito specificato solo per l'operazione di invio. Non è inoltre necessario chiamare il Bind metodo perché il provider di servizi sottostante assegnerà l'indirizzo di rete locale e il numero di porta più appropriati. Se è necessario identificare l'indirizzo di rete locale assegnato e il numero di porta, è possibile usare la LocalEndPoint proprietà al termine del SendTo metodo.

Anche se destinato ai protocolli senza connessione, SendTo funziona anche con protocolli orientati alla connessione. Se si usa un protocollo orientato alla connessione, è prima necessario stabilire una connessione host remota chiamando il Connect metodo o accettando una richiesta di connessione in ingresso usando il Accept metodo . Se non si stabilisce o si accetta una connessione host remota, SendTo genera un'eccezione SocketException. È anche possibile stabilire un host remoto predefinito per un protocollo senza connessione prima di chiamare il SendTo metodo . In uno di questi casi, SendTo ignorerà il remoteEP parametro e invierà solo i dati all'host remoto connesso o predefinito.

I socket di blocco si bloccano fino a quando non viene inviato il numero di byte richiesto. Poiché un blocco non Socket viene completato immediatamente, potrebbe non inviare tutti i byte richiesti in una singola operazione. È 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 SendTo metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.

Se si usa un protocollo senza connessione in modalità di blocco, SendTo si blocca fino all'invio del datagramma. Se si desidera inviare dati a un indirizzo di trasmissione, è prima necessario chiamare il SetSocketOption metodo e impostare l'opzione socket su SocketOptionName.Broadcast. È inoltre necessario assicurarsi che il numero di byte inviati non superi le dimensioni massime del pacchetto del provider di servizi sottostante. In caso affermativo, il datagramma non verrà inviato e SendTo genererà un'eccezione SocketException.

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

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

Si applica a

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Invia dati a un endpoint specifico usando l'oggetto specificato SocketFlags.

public:
 int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::SocketAddress ^ socketAddress);
public int SendTo(ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.SocketAddress socketAddress);
member this.SendTo : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * System.Net.SocketAddress -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, socketAddress As SocketAddress) As Integer

Parametri

buffer
ReadOnlySpan<Byte>

Intervallo di byte che contiene i dati da inviare.

socketFlags
SocketFlags

Combinazione bit per bit dei SocketFlags valori che verranno usati durante l'invio dei dati.

socketAddress
SocketAddress

Oggetto SocketAddress che rappresenta la destinazione per i dati.

Restituisce

Numero di byte inviati.

Eccezioni

socketAddress è null.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Si applica a

SendTo(ReadOnlySpan<Byte>, EndPoint)

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Invia i dati all'endpoint specificato.

public:
 int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::EndPoint ^ remoteEP);
public int SendTo(ReadOnlySpan<byte> buffer, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), remoteEP As EndPoint) As Integer

Parametri

buffer
ReadOnlySpan<Byte>

Intervallo di byte che contiene i dati da inviare.

remoteEP
EndPoint

Oggetto EndPoint che rappresenta la destinazione per i dati.

Restituisce

Numero di byte inviati.

Eccezioni

remoteEP è null.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Si applica a

SendTo(Byte[], SocketFlags, EndPoint)

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Invia dati a un endpoint specifico usando l'oggetto specificato SocketFlags.

public:
 int SendTo(cli::array <System::Byte> ^ buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo(byte[] buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), socketFlags As SocketFlags, remoteEP As EndPoint) As Integer

Parametri

buffer
Byte[]

Matrice di tipo Byte che contiene i dati da inviare.

socketFlags
SocketFlags

Combinazione bit per bit dei SocketFlags valori.

remoteEP
EndPoint

Oggetto EndPoint che rappresenta il percorso di destinazione per i dati.

Restituisce

Numero di byte inviati.

Eccezioni

buffer è null.

oppure

remoteEP è null.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Esempio

Nell'esempio di codice seguente viene inviato un datagramma senza connessione all'host remoto specificato. SocketFlags vengono passati al SendTo metodo .

public static void SendTo2()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, SocketFlags.None, endPoint);
    s.Close();
}
Public Shared Sub SendTo2() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, SocketFlags.None, endPoint)
    s.Close()

End Sub

Commenti

In questo overload, l'offset del buffer viene impostato su 0 e il numero di byte da inviare per impostazione predefinita alle dimensioni di buffer. Se si specifica il DontRoute flag come socketflags parametro, i dati inviati non verranno instradati.

Se si usa un protocollo senza connessione, non è necessario stabilire un host remoto predefinito con il Connect metodo prima di chiamare SendTo. Questa operazione deve essere eseguita solo se si intende chiamare il Send metodo . Se si chiama il Connect metodo prima di chiamare SendTo, il parametro eseguirà l'override remoteEP dell'host remoto predefinito specificato solo per l'operazione di invio. Non è inoltre necessario chiamare il Bind metodo perché il provider di servizi sottostante assegnerà l'indirizzo di rete locale e il numero di porta più appropriati. Se è necessario identificare l'indirizzo di rete locale assegnato e il numero di porta, è possibile usare la LocalEndPoint proprietà al termine del SendTo metodo.

Anche se destinato ai protocolli senza connessione, SendTo funziona anche con protocolli orientati alla connessione. Se si usa un protocollo orientato alla connessione, è prima necessario stabilire una connessione host remota chiamando il Connect metodo o accettando una richiesta di connessione in ingresso usando il Accept metodo . Se non si stabilisce o si accetta una connessione host remota, SendTo genera un'eccezione SocketException. È anche possibile stabilire un host remoto predefinito per un protocollo senza connessione prima di chiamare il SendTo metodo . In uno di questi casi, SendTo ignorerà il remoteEP parametro e invierà solo i dati all'host remoto connesso o predefinito.

I socket di blocco si bloccano fino a quando non vengono inviati tutti i byte richiesti in buffer . Poiché un blocco non Socket viene completato immediatamente, potrebbe non inviare tutti i byte in buffer. È responsabilità dell'applicazione tenere traccia del numero di byte inviati e ripetere l'operazione fino a quando l'applicazione non invia tutti i byte in 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 SendTo metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.

Se si usa un protocollo senza connessione in modalità di blocco, SendTo si blocca fino all'invio del datagramma. Se si desidera inviare dati a un indirizzo di trasmissione, è prima necessario chiamare il SetSocketOption metodo e impostare l'opzione socket su SocketOptionName.Broadcast. È inoltre necessario assicurarsi che il numero di byte inviati non superi le dimensioni massime del pacchetto del provider di servizi sottostante. In caso affermativo, il datagramma non verrà inviato e SendTo genererà un'eccezione SocketException.

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

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

Si applica a

SendTo(Byte[], EndPoint)

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Invia i dati all'endpoint specificato.

public:
 int SendTo(cli::array <System::Byte> ^ buffer, System::Net::EndPoint ^ remoteEP);
public int SendTo(byte[] buffer, System.Net.EndPoint remoteEP);
member this.SendTo : byte[] * System.Net.EndPoint -> int
Public Function SendTo (buffer As Byte(), remoteEP As EndPoint) As Integer

Parametri

buffer
Byte[]

Matrice di tipo Byte che contiene i dati da inviare.

remoteEP
EndPoint

Oggetto EndPoint che rappresenta la destinazione per i dati.

Restituisce

Numero di byte inviati.

Eccezioni

buffer è null.

oppure

remoteEP è null.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Esempio

Nell'esempio di codice seguente viene inviato un datagramma senza connessione all'host remoto specificato.

public static void SendTo1()
{
    IPHostEntry hostEntry = Dns.GetHostEntry(Dns.GetHostName());
    IPEndPoint endPoint = new IPEndPoint(hostEntry.AddressList[0], 11000);

    Socket s = new Socket(endPoint.Address.AddressFamily,
        SocketType.Dgram,
        ProtocolType.Udp);

    byte[] msg = Encoding.ASCII.GetBytes("This is a test");
    Console.WriteLine("Sending data.");
    // This call blocks.
    s.SendTo(msg, endPoint);
    s.Close();
}
Public Shared Sub SendTo1() 
    Dim hostEntry As IPHostEntry = Dns.GetHostEntry(Dns.GetHostName())
    Dim endPoint As New IPEndPoint(hostEntry.AddressList(0), 11000)
    
    Dim s As New Socket(endPoint.Address.AddressFamily, SocketType.Dgram, ProtocolType.Udp)
    
    Dim msg As Byte() = Encoding.ASCII.GetBytes("This is a test")
    Console.WriteLine("Sending data.")
    ' This call blocks. 
    s.SendTo(msg, endPoint)
    s.Close()

End Sub

Commenti

In questo overload, l'offset del buffer viene impostato per impostazione predefinita su 0, il numero di byte da inviare per impostazione predefinita alle dimensioni del buffer parametro e il SocketFlags valore predefinito è 0.

Se si usa un protocollo senza connessione, non è necessario stabilire un host remoto predefinito con il Connect metodo prima di chiamare SendTo. Questa operazione deve essere eseguita solo se si intende chiamare il Send metodo . Se si chiama il Connect metodo prima di chiamare SendTo, il parametro eseguirà l'override remoteEP dell'host remoto predefinito specificato solo per l'operazione di invio. Non è inoltre necessario chiamare il Bind metodo perché il provider di servizi sottostante assegnerà l'indirizzo di rete locale e il numero di porta più appropriati. Se è necessario identificare l'indirizzo di rete locale assegnato e il numero di porta, è possibile usare la LocalEndPoint proprietà al termine del SendTo metodo.

Anche se destinato ai protocolli senza connessione, SendTo funziona anche con protocolli orientati alla connessione. Se si usa un protocollo orientato alla connessione, è prima necessario stabilire una connessione host remota chiamando il Connect metodo o accettando una richiesta di connessione in ingresso usando il Accept metodo . Se non si stabilisce o si accetta una connessione host remota, SendTo genera un'eccezione SocketException. È anche possibile stabilire un host remoto predefinito per un protocollo senza connessione prima di chiamare il SendTo metodo . In uno di questi casi, SendTo ignorerà il remoteEP parametro e invierà solo i dati all'host remoto connesso o predefinito.

I socket di blocco si bloccano fino a quando non vengono inviati tutti i byte nel buffer. Poiché un blocco non Socket viene completato immediatamente, potrebbe non inviare tutti i byte in buffer. È responsabilità dell'applicazione tenere traccia del numero di byte inviati e ripetere l'operazione fino a quando l'applicazione non invia tutti i byte in 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 SendTo metodo significa che il sistema sottostante ha avuto spazio per memorizzare nel buffer i dati per un invio di rete.

Se si usa un protocollo senza connessione in modalità di blocco, SendTo si blocca fino all'invio del datagramma. Se si desidera inviare dati a un indirizzo di trasmissione, è prima necessario chiamare il SetSocketOption metodo e impostare l'opzione socket su SocketOptionName.Broadcast. È inoltre necessario assicurarsi che il numero di byte inviati non superi le dimensioni massime del pacchetto del provider di servizi sottostante. In caso affermativo, il datagramma non verrà inviato e SendTo genererà un'eccezione SocketException.

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

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

Si applica a

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs
Origine:
Socket.cs

Invia dati a un endpoint specifico usando l'oggetto specificato SocketFlags.

public:
 int SendTo(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, System::Net::EndPoint ^ remoteEP);
public int SendTo(ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, System.Net.EndPoint remoteEP);
member this.SendTo : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * System.Net.EndPoint -> int
Public Function SendTo (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, remoteEP As EndPoint) As Integer

Parametri

buffer
ReadOnlySpan<Byte>

Intervallo di byte che contiene i dati da inviare.

socketFlags
SocketFlags

Combinazione bit per bit dei SocketFlags valori.

remoteEP
EndPoint

Oggetto EndPoint che rappresenta la destinazione per i dati.

Restituisce

Numero di byte inviati.

Eccezioni

remoteEP è null.

Si è verificato un errore durante il tentativo di accesso al socket.

L'oggetto Socket è stato chiuso.

Si applica a