Socket.SendTo Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Odesílá data do konkrétního koncového bodu.
Přetížení
| Name | Description |
|---|---|
| SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint) |
Odešle zadaný počet bajtů dat do zadaného koncového bodu, počínaje zadaným umístěním v vyrovnávací paměti a použitím zadaného SocketFlags. |
| SendTo(Byte[], Int32, SocketFlags, EndPoint) |
Pomocí zadaného koncového bodu odešle zadaný počet bajtů dat do zadaného SocketFlagskoncového bodu. |
| SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress) |
Odešle data do konkrétního koncového bodu pomocí zadaného SocketFlagskoncového bodu . |
| SendTo(ReadOnlySpan<Byte>, EndPoint) |
Odešle data do zadaného koncového bodu. |
| SendTo(Byte[], SocketFlags, EndPoint) |
Odešle data do konkrétního koncového bodu pomocí zadaného SocketFlagskoncového bodu . |
| SendTo(Byte[], EndPoint) |
Odešle data do zadaného koncového bodu. |
| SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint) |
Odešle data do konkrétního koncového bodu pomocí zadaného SocketFlagskoncového bodu . |
SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odešle zadaný počet bajtů dat do zadaného koncového bodu, počínaje zadaným umístěním v vyrovnávací paměti a použitím zadaného 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
Parametry
- offset
- Int32
Pozice v vyrovnávací paměti dat, ve které se mají začít odesílat data.
- size
- Int32
Počet bajtů, které se mají odeslat.
- socketFlags
- SocketFlags
Bitové kombinace SocketFlags hodnot.
Návraty
Počet odeslaných bajtů.
Výjimky
offset je menší než 0.
nebo
offset je větší než délka buffer.
nebo
size je menší než 0.
nebo
size je větší než délka buffer minus hodnota parametru offset .
socketFlags není platná kombinace hodnot.
nebo
Při přístupu k systému dojde k chybě operačního Socketsystému .
Ta Socket byla uzavřena.
Volající v zásobníku volání nemá požadovaná oprávnění.
Příklady
Následující příklad kódu odešle datagram bez připojení zadanému vzdálenému hostiteli. Posun, velikost a SocketFlags jsou předány metodě SendTo .
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
Poznámky
Pokud v tomto přetížení zadáte DontRoute příznak jako socketflags parametr, data, která odesíláte, nebudou směrována.
Pokud používáte protokol bez připojení, nemusíte před voláním SendTonavázat výchozího vzdáleného hostitele s metodou Connect . Stačí to udělat jenom v případě, že chcete metodu Send volat. Pokud voláte metodu Connect před voláním SendTo, remoteEP parametr přepíše zadaného výchozího vzdáleného hostitele pouze pro danou operaci odeslání. Také není nutné volat metodu Bind , protože podkladový poskytovatel služeb přiřadí nejvhodnější adresu místní sítě a číslo portu. Pokud potřebujete identifikovat přiřazenou adresu místní sítě a číslo portu, můžete vlastnost použít LocalEndPoint po SendTo úspěšném dokončení metody.
I když jsou určené pro protokoly bez připojení, SendTo funguje také s protokoly orientovanými na připojení. Pokud používáte protokol orientovaný na připojení, musíte nejprve navázat připojení ke vzdálenému hostiteli voláním Connect metody nebo přijetím příchozího požadavku na připojení pomocí Accept metody. Pokud nenavážete nebo nepřijmete připojení ke vzdálenému hostiteli, SendTo vyvolá chybu SocketException. Před voláním SendTo metody můžete také vytvořit výchozího vzdáleného hostitele pro protokol bez připojení. V obou těchto případech SendTo bude parametr ignorovat remoteEP a odesílat data pouze připojenému nebo výchozímu vzdálenému hostiteli.
Blokující sokety se zablokují, dokud nebude odeslán požadovaný počet bajtů. Vzhledem k tomu, že se blokování Socket nedokončí okamžitě, nemusí odesílat všechny bajty požadované v jedné operaci. Za sledování počtu odeslaných bajtů a opakování operace zodpovídá vaše aplikace, dokud aplikace neodešle požadovaný počet bajtů. Také není zaručeno, že se data, která odesíláte, zobrazí v síti okamžitě. Aby se zvýšila efektivita sítě, může základní systém zpozdit přenos, dokud se neshromáždí značné množství odchozích dat. Úspěšné dokončení SendTo metody znamená, že základní systém měl místo pro ukládání dat do vyrovnávací paměti pro odesílání sítě.
Pokud používáte protokol bez připojení v režimu blokování, SendTo zablokuje se, dokud se datagram nepředá. Pokud chcete odesílat data na adresu všesměrového vysílání, musíte nejprve zavolat metodu SetSocketOption a nastavit možnost soketu na SocketOptionName.Broadcast. Musíte také mít jistotu, že velikost nepřekračuje maximální velikost paketů příslušného poskytovatele služeb. Pokud ano, datagram se neodesílají a SendTo vyvolají .SocketException
Poznámka:
Pokud se zobrazí kód SocketExceptionchyby, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si přečtěte dokumentaci k chybě rozhraní API rozhraní WINDOWS Sockets verze 2 , kde najdete podrobný popis chyby.
Poznámka:
Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.
Viz také
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Platí pro
SendTo(Byte[], Int32, SocketFlags, EndPoint)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Pomocí zadaného koncového bodu odešle zadaný počet bajtů dat do zadaného SocketFlagskoncového bodu.
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
Parametry
- size
- Int32
Počet bajtů, které se mají odeslat.
- socketFlags
- SocketFlags
Bitové kombinace SocketFlags hodnot.
Návraty
Počet odeslaných bajtů.
Výjimky
Zadaná size hodnota překračuje velikost buffer.
Při pokusu o přístup k soketu došlo k chybě.
Ta Socket byla uzavřena.
Příklady
Následující příklad kódu odešle datagram bez připojení zadanému vzdálenému hostiteli. Velikost a SocketFlags předá se metodě SendTo .
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
Poznámky
V tomto přetížení se posun vyrovnávací paměti ve výchozím nastavení nastaví na 0. Pokud jako parametr zadáte DontRoute příznak, data, která odesíláte, nebudou socketflags směrována.
Pokud používáte protokol bez připojení, nemusíte před voláním SendTonavázat výchozího vzdáleného hostitele s metodou Connect . Stačí to udělat jenom v případě, že chcete metodu Send volat. Pokud voláte metodu Connect před voláním SendTo, remoteEP parametr přepíše zadaného výchozího vzdáleného hostitele pouze pro danou operaci odeslání. Také není nutné volat metodu Bind , protože podkladový poskytovatel služeb přiřadí nejvhodnější adresu místní sítě a číslo portu. Pokud potřebujete identifikovat přiřazenou adresu místní sítě a číslo portu, můžete vlastnost použít LocalEndPoint po SendTo úspěšném dokončení metody.
I když jsou určené pro protokoly bez připojení, SendTo funguje také s protokoly orientovanými na připojení. Pokud používáte protokol orientovaný na připojení, musíte nejprve navázat připojení ke vzdálenému hostiteli voláním Connect metody nebo přijetím příchozího požadavku na připojení pomocí Accept metody. Pokud nenavážete nebo nepřijmete připojení ke vzdálenému hostiteli, SendTo vyvolá chybu SocketException. Před voláním SendTo metody můžete také vytvořit výchozího vzdáleného hostitele pro protokol bez připojení. V obou těchto případech SendTo bude parametr ignorovat remoteEP a odesílat data pouze připojenému nebo výchozímu vzdálenému hostiteli.
Blokující sokety se zablokují, dokud nebude odeslán požadovaný počet bajtů. Vzhledem k tomu, že se blokování Socket dokončí okamžitě, nemusí odesílat všechny bajty požadované v jedné operaci. Je zodpovědností vaší aplikace sledovat počet odeslaných bajtů a opakovat operaci, dokud aplikace neodešle požadovaný počet bajtů. Také není zaručeno, že se data, která odesíláte, zobrazí v síti okamžitě. Aby se zvýšila efektivita sítě, může základní systém zpozdit přenos, dokud se neshromáždí značné množství odchozích dat. Úspěšné dokončení SendTo metody znamená, že základní systém měl místo pro ukládání dat do vyrovnávací paměti pro odesílání sítě.
Pokud používáte protokol bez připojení v režimu blokování, SendTo zablokuje se, dokud se datagram nepředá. Pokud chcete odesílat data na adresu všesměrového vysílání, musíte nejprve zavolat metodu SetSocketOption a nastavit možnost soketu na SocketOptionName.Broadcast. Musíte také mít jistotu, že počet odeslaných bajtů nepřekračuje maximální velikost paketů příslušného poskytovatele služeb. Pokud ano, datagram se neodesílají a SendTo vyvolají .SocketException
Poznámka:
Pokud se zobrazí kód SocketExceptionchyby, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si přečtěte dokumentaci k chybě rozhraní API rozhraní WINDOWS Sockets verze 2 , kde najdete podrobný popis chyby.
Poznámka:
Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.
Viz také
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Platí pro
SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odešle data do konkrétního koncového bodu pomocí zadaného SocketFlagskoncového bodu .
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
Parametry
- buffer
- ReadOnlySpan<Byte>
Rozsah bajtů obsahujících data, která se mají odeslat.
- socketFlags
- SocketFlags
Bitové kombinace SocketFlags hodnot, které se použijí při odesílání dat.
- socketAddress
- SocketAddress
Představuje SocketAddress cíl dat.
Návraty
Počet odeslaných bajtů.
Výjimky
socketAddress je null.
Při pokusu o přístup k soketu došlo k chybě.
Ta Socket byla uzavřena.
Platí pro
SendTo(ReadOnlySpan<Byte>, EndPoint)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odešle data do zadaného koncového bodu.
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
Parametry
- buffer
- ReadOnlySpan<Byte>
Rozsah bajtů obsahujících data, která se mají odeslat.
Návraty
Počet odeslaných bajtů.
Výjimky
remoteEP je null.
Při pokusu o přístup k soketu došlo k chybě.
Ta Socket byla uzavřena.
Platí pro
SendTo(Byte[], SocketFlags, EndPoint)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odešle data do konkrétního koncového bodu pomocí zadaného SocketFlagskoncového bodu .
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
Parametry
- socketFlags
- SocketFlags
Bitové kombinace SocketFlags hodnot.
Návraty
Počet odeslaných bajtů.
Výjimky
Při pokusu o přístup k soketu došlo k chybě.
Ta Socket byla uzavřena.
Příklady
Následující příklad kódu odešle datagram bez připojení zadanému vzdálenému hostiteli. SocketFlags jsou předány metodě SendTo .
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
Poznámky
V tomto přetížení se posun vyrovnávací paměti ve výchozím nastavení nastaví na 0 a počet bajtů, které se mají odeslat výchozí hodnoty velikosti buffer. Pokud jako parametr zadáte DontRoute příznak, data, která odesíláte, nebudou socketflags směrována.
Pokud používáte protokol bez připojení, nemusíte před voláním SendTonavázat výchozího vzdáleného hostitele s metodou Connect . Stačí to udělat jenom v případě, že chcete metodu Send volat. Pokud voláte metodu Connect před voláním SendTo, remoteEP parametr přepíše zadaného výchozího vzdáleného hostitele pouze pro danou operaci odeslání. Také není nutné volat metodu Bind , protože podkladový poskytovatel služeb přiřadí nejvhodnější adresu místní sítě a číslo portu. Pokud potřebujete identifikovat přiřazenou adresu místní sítě a číslo portu, můžete vlastnost použít LocalEndPoint po SendTo úspěšném dokončení metody.
I když jsou určené pro protokoly bez připojení, SendTo funguje také s protokoly orientovanými na připojení. Pokud používáte protokol orientovaný na připojení, musíte nejprve navázat připojení ke vzdálenému hostiteli voláním Connect metody nebo přijetím příchozího požadavku na připojení pomocí Accept metody. Pokud nenavážete nebo nepřijmete připojení ke vzdálenému hostiteli, SendTo vyvolá chybu SocketException. Před voláním SendTo metody můžete také vytvořit výchozího vzdáleného hostitele pro protokol bez připojení. V obou těchto případech SendTo bude parametr ignorovat remoteEP a odesílat data pouze připojenému nebo výchozímu vzdálenému hostiteli.
Blokující sokety se zablokují, dokud nebudou odeslány všechny bajty v tabulce buffer . Vzhledem k tomu, že se odblokování Socket dokončí okamžitě, nemusí odesílat všechny bajty v buffersadě . Je zodpovědností vaší aplikace sledovat počet odeslaných bajtů a opakovat operaci, dokud aplikace neodešle všechny bajty v objektu buffer. Také není zaručeno, že se data, která odesíláte, zobrazí v síti okamžitě. Aby se zvýšila efektivita sítě, může základní systém zpozdit přenos, dokud se neshromáždí značné množství odchozích dat. Úspěšné dokončení SendTo metody znamená, že základní systém měl místo pro ukládání dat do vyrovnávací paměti pro odesílání sítě.
Pokud používáte protokol bez připojení v režimu blokování, SendTo zablokuje se, dokud se datagram nepředá. Pokud chcete odesílat data na adresu všesměrového vysílání, musíte nejprve zavolat metodu SetSocketOption a nastavit možnost soketu na SocketOptionName.Broadcast. Musíte také mít jistotu, že počet odeslaných bajtů nepřekračuje maximální velikost paketů příslušného poskytovatele služeb. Pokud ano, datagram se neodesílají a SendTo vyvolají .SocketException
Poznámka:
Pokud se zobrazí kód SocketExceptionchyby, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si přečtěte dokumentaci k chybě rozhraní API rozhraní WINDOWS Sockets verze 2 , kde najdete podrobný popis chyby.
Poznámka:
Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.
Viz také
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Platí pro
SendTo(Byte[], EndPoint)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odešle data do zadaného koncového bodu.
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
Parametry
Návraty
Počet odeslaných bajtů.
Výjimky
Při pokusu o přístup k soketu došlo k chybě.
Ta Socket byla uzavřena.
Příklady
Následující příklad kódu odešle datagram bez připojení zadanému vzdálenému hostiteli.
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
Poznámky
V tomto přetížení se posun vyrovnávací paměti ve výchozím nastavení nastaví na 0, počet bajtů, které se mají odeslat výchozí hodnoty na velikost parametru buffer , a SocketFlags výchozí hodnota je 0.
Pokud používáte protokol bez připojení, nemusíte před voláním SendTonavázat výchozího vzdáleného hostitele s metodou Connect . Stačí to udělat jenom v případě, že chcete metodu Send volat. Pokud voláte metodu Connect před voláním SendTo, remoteEP parametr přepíše zadaného výchozího vzdáleného hostitele pouze pro danou operaci odeslání. Také není nutné volat metodu Bind , protože podkladový poskytovatel služeb přiřadí nejvhodnější adresu místní sítě a číslo portu. Pokud potřebujete identifikovat přiřazenou adresu místní sítě a číslo portu, můžete vlastnost použít LocalEndPoint po SendTo úspěšném dokončení metody.
I když jsou určené pro protokoly bez připojení, SendTo funguje také s protokoly orientovanými na připojení. Pokud používáte protokol orientovaný na připojení, musíte nejprve navázat připojení ke vzdálenému hostiteli voláním Connect metody nebo přijetím příchozího požadavku na připojení pomocí Accept metody. Pokud nenavážete nebo nepřijmete připojení ke vzdálenému hostiteli, SendTo vyvolá chybu SocketException. Před voláním SendTo metody můžete také vytvořit výchozího vzdáleného hostitele pro protokol bez připojení. V obou těchto případech SendTo bude parametr ignorovat remoteEP a odesílat data pouze připojenému nebo výchozímu vzdálenému hostiteli.
Blokující sokety se zablokují, dokud nebudou odeslány všechny bajty v vyrovnávací paměti. Vzhledem k tomu, že se odblokování Socket dokončí okamžitě, nemusí odesílat všechny bajty v buffersadě . Je zodpovědností vaší aplikace sledovat počet odeslaných bajtů a opakovat operaci, dokud aplikace neodešle všechny bajty v objektu buffer. Také není zaručeno, že se data, která odesíláte, zobrazí v síti okamžitě. Aby se zvýšila efektivita sítě, může základní systém zpozdit přenos, dokud se neshromáždí značné množství odchozích dat. Úspěšné dokončení SendTo metody znamená, že základní systém měl místo pro ukládání dat do vyrovnávací paměti pro odesílání sítě.
Pokud používáte protokol bez připojení v režimu blokování, SendTo zablokuje se, dokud se datagram nepředá. Pokud chcete odesílat data na adresu všesměrového vysílání, musíte nejprve zavolat metodu SetSocketOption a nastavit možnost soketu na SocketOptionName.Broadcast. Musíte také mít jistotu, že počet odeslaných bajtů nepřekračuje maximální velikost paketů příslušného poskytovatele služeb. Pokud ano, datagram se neodesílají a SendTo vyvolají .SocketException
Poznámka:
Pokud se zobrazí kód SocketExceptionchyby, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si přečtěte dokumentaci k chybě rozhraní API rozhraní WINDOWS Sockets verze 2 , kde najdete podrobný popis chyby.
Poznámka:
Tento člen vypíše informace o trasování, když ve své aplikaci povolíte trasování sítě. Další informace naleznete v tématu Trasování sítě v rozhraní .NET Framework.
Viz také
- Connect(EndPoint)
- Bind(EndPoint)
- Send(Byte[], Int32, SocketFlags)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
- LocalEndPoint
Platí pro
SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
- Zdroj:
- Socket.cs
Odešle data do konkrétního koncového bodu pomocí zadaného SocketFlagskoncového bodu .
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
Parametry
- buffer
- ReadOnlySpan<Byte>
Rozsah bajtů obsahujících data, která se mají odeslat.
- socketFlags
- SocketFlags
Bitové kombinace SocketFlags hodnot.
Návraty
Počet odeslaných bajtů.
Výjimky
remoteEP je null.
Při pokusu o přístup k soketu došlo k chybě.
Ta Socket byla uzavřena.