Socket.SendTo 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 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
- 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.
Eccezioni
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
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
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
- size
- Int32
Numero di byte da inviare.
- socketFlags
- SocketFlags
Combinazione bit per bit dei SocketFlags valori.
Restituisce
Numero di byte inviati.
Eccezioni
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
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
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.
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
- socketFlags
- SocketFlags
Combinazione bit per bit dei SocketFlags valori.
Restituisce
Numero di byte inviati.
Eccezioni
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
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
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
Restituisce
Numero di byte inviati.
Eccezioni
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
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
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.
Restituisce
Numero di byte inviati.
Eccezioni
remoteEP è null.
Si è verificato un errore durante il tentativo di accesso al socket.
L'oggetto Socket è stato chiuso.