Sdílet prostřednictvím


Socket.SendTo Metoda

Definice

Odesílá data do konkrétního koncového bodu.

Přetížení

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 ve vyrovnávací paměti a pomocí zadaného SocketFlags.

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

Odešle zadaný počet bajtů dat do zadaného koncového bodu pomocí .SocketFlags

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

Odešle data do konkrétního koncového bodu pomocí zadaného SocketFlagsparametru .

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 SocketFlagsparametru .

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 SocketFlagsparametru .

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

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 ve vyrovnávací paměti a pomocí 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

buffer
Byte[]

Pole typu Byte obsahující data, která mají být odeslána.

offset
Int32

Pozice ve vyrovnávací paměti dat, ve které chcete začít odesílat data.

size
Int32

Počet bajtů k odeslání.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

remoteEP
EndPoint

Hodnota EndPoint , která představuje cílové umístění dat.

Návraty

Počet odeslaných bajtů

Výjimky

buffer je null.

-nebo-

remoteEP je null.

offset je menší než 0.

-nebo-

offsetje větší než délka .buffer

-nebo-

size je menší než 0.

-nebo-

size je větší než délka parametru buffer minus hodnota parametru offset .

socketFlags není platná kombinace hodnot.

-nebo-

Při přístupu k dojde k chybě operačního Socketsystému .

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í na zadaného vzdáleného hostitele. Posun, velikost a SocketFlags jsou předány SendTo metodě .

static void SendTo4()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<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 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, nebudou odesílaná data směrována.

Pokud používáte protokol bez připojení, před voláním SendTometody není nutné vytvořit výchozího vzdáleného Connect hostitele pomocí metody . Stačí to provést pouze v případě, že máte v úmyslu volat metodu Send . Pokud zavoláte metodu Connect před voláním SendTometody , remoteEP parametr přepíše zadaného výchozího vzdáleného hostitele pouze pro danou operaci odeslání. Také nemusíte volat metodu Bind , protože poskytovatel služeb přiřadí nejvhodnější místní síťovou adresu a číslo portu. Pokud potřebujete identifikovat přiřazenou adresu místní sítě a číslo portu, můžete po SendTo úspěšném dokončení metody použít LocalEndPoint vlastnost .

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 vytvořit připojení vzdáleného hostitele voláním Connect metody nebo přijmout příchozí požadavek na připojení pomocí Accept metody . Pokud nenavážete nebo nepřijmete připojení ke vzdálenému hostiteli, SendTo vyvolá se SocketException. Před voláním metody můžete také vytvořit výchozího vzdáleného SendTo 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 budou blokovány, dokud nebude odeslán požadovaný počet bajtů. Vzhledem k tomu, že se neblokující Socket operace dokončí okamžitě, nemusí odeslat všechny požadované bajty v rámci jedné operace. Vaše aplikace zodpovídá za sledování počtu odeslaných bajtů a opakování operace, dokud aplikace neodešle požadovaný počet bajtů. Není také zaručeno, že se odesílaná data objeví 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í významné množství odchozích dat. Úspěšné dokončení SendTo metody znamená, že podkladový systém měl prostor pro ukládání dat do vyrovnávací paměti pro síťové odesílání.

Pokud používáte protokol bez připojení v režimu blokování, SendTo bude nástroj blokovat, dokud se datagram nepošle. 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é zajistit, aby velikost nepřekračovala maximální velikost paketů příslušného poskytovatele služeb. Pokud ano, datagram se neodesílají a SendTo vyvolá .SocketException

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API rozhraní Windows Sockets verze 2 .

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

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

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Odešle zadaný počet bajtů dat do zadaného koncového bodu pomocí zadaného 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

Parametry

buffer
Byte[]

Pole typu Byte obsahující data, která mají být odeslána.

size
Int32

Počet bajtů k odeslání.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

remoteEP
EndPoint

Hodnota EndPoint , která představuje cílové umístění dat.

Návraty

Počet odeslaných bajtů.

Výjimky

buffer je null.

-nebo-

remoteEP je null.

Zadaná size hodnota překračuje velikost buffer.

Při pokusu o přístup k soketu došlo k chybě.

Příklady

Následující příklad kódu odešle datagram bez připojení na zadaného vzdáleného hostitele. Velikost a SocketFlags jsou předány SendTo metodě .

static void SendTo3()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<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 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

Při tomto přetížení je posun vyrovnávací paměti ve výchozím nastavení 0. Pokud jako socketflags parametr zadáte DontRoute příznak, nebudou odesílaná data směrována.

Pokud používáte protokol bez připojení, před voláním SendTometody není nutné vytvořit výchozího vzdáleného Connect hostitele pomocí metody . Stačí to provést pouze v případě, že máte v úmyslu volat metodu Send . Pokud zavoláte metodu Connect před voláním SendTometody , remoteEP parametr přepíše zadaného výchozího vzdáleného hostitele pouze pro danou operaci odeslání. Také nemusíte volat metodu Bind , protože poskytovatel služeb přiřadí nejvhodnější místní síťovou adresu a číslo portu. Pokud potřebujete identifikovat přiřazenou adresu místní sítě a číslo portu, můžete po SendTo úspěšném dokončení metody použít LocalEndPoint vlastnost .

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 vytvořit připojení vzdáleného hostitele voláním Connect metody nebo přijmout příchozí požadavek na připojení pomocí Accept metody . Pokud nenavážete nebo nepřijmete připojení ke vzdálenému hostiteli, SendTo vyvolá se SocketException. Před voláním metody můžete také vytvořit výchozího vzdáleného SendTo 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 budou blokovány, dokud nebude odeslán požadovaný počet bajtů. Vzhledem k tomu, že se odblokování Socket dokončí okamžitě, nemusí odeslat všechny požadované bajty v rámci jedné operace. Je zodpovědností vaší aplikace sledovat počet odeslaných bajtů a opakovat operaci, dokud aplikace neodešle požadovaný počet bajtů. Není také zaručeno, že se odesílaná data objeví 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í významné množství odchozích dat. Úspěšné dokončení SendTo metody znamená, že podkladový systém měl prostor pro ukládání dat do vyrovnávací paměti pro síťové odesílání.

Pokud používáte protokol bez připojení v režimu blokování, SendTo bude nástroj blokovat, dokud se datagram nepošle. 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 se také ujistit, ž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 vyvolá SocketException.

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

SendTo(ReadOnlySpan<Byte>, SocketFlags, SocketAddress)

Zdroj:
Socket.cs
Zdroj:
Socket.cs

Odešle data do konkrétního koncového bodu pomocí zadaného 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

Parametry

buffer
ReadOnlySpan<Byte>

Rozsah bajtů, který obsahuje data, která se mají odeslat.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot, které se použijí při odesílání dat.

socketAddress
SocketAddress

Hodnota SocketAddress , která představuje 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ě.

Platí pro

SendTo(ReadOnlySpan<Byte>, EndPoint)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Odesílá 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ů, který obsahuje data, která se mají odeslat.

remoteEP
EndPoint

Hodnota EndPoint , která představuje cíl dat.

Návraty

Počet odeslaných bajtů.

Výjimky

remoteEP je null.

Při pokusu o přístup k soketu došlo k chybě.

Platí pro

SendTo(Byte[], SocketFlags, EndPoint)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Odešle data do konkrétního koncového bodu pomocí zadaného 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

Parametry

buffer
Byte[]

Pole typu Byte obsahující data, která se mají odeslat.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

remoteEP
EndPoint

Hodnota EndPoint , která představuje cílové umístění dat.

Návraty

Počet odeslaných bajtů.

Výjimky

buffer je null.

-nebo-

remoteEP je null.

Při pokusu o přístup k soketu došlo k chybě.

Příklady

Následující příklad kódu odešle datagram bez připojení určenému vzdálenému hostiteli. SocketFlags jsou předány SendTo metodě.

static void SendTo2()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<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 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

Při tomto přetížení se posun vyrovnávací paměti standardně nastaví na 0 a počet bajtů, které se mají odeslat, se výchozí hodnota nastaví na velikost buffer. Pokud jako socketflags parametr zadáte DontRoute příznak, nebudou odesílaná data směrována.

Pokud používáte protokol bez připojení, nemusíte před voláním SendTometody vytvořit výchozího vzdáleného Connect hostitele. Stačí, když chcete metodu Send volat. Pokud zavoláte metodu Connect před voláním SendToremoteEP , parametr přepíše zadaného výchozího vzdáleného hostitele pouze pro danou operaci odeslání. Také nemusíte volat metodu Bind , protože podkladový poskytovatel služeb přiřadí nejvhodnější místní síťovou adresu a číslo portu. Pokud potřebujete identifikovat přiřazenou adresu místní sítě a číslo portu, můžete použít LocalEndPoint vlastnost 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í vzdáleného hostitele voláním Connect metody nebo přijmout příchozí požadavek na připojení pomocí Accept metody . Pokud nenavážete nebo nepřijmete připojení ke vzdálenému hostiteli, SendTo vyvolá se SocketException. Před voláním metody můžete také vytvořit výchozího vzdáleného SendTo 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 budou blokovány, dokud nebudou odeslány všechny požadované bajty v objektu buffer . Vzhledem k tomu, že se neodblokování Socket dokončí okamžitě, nemusí odeslat všechny bajty v buffersouboru . Je zodpovědností vaší aplikace sledovat počet odeslaných bajtů a opakovat operaci, dokud aplikace neodešle všechny bajty v buffersouboru . Není také zaručeno, že se odeslaná data zobrazí v síti okamžitě. Aby se zvýšila efektivita sítě, základní systém může zpozdit přenos, dokud se neshromáždí značné množství odpojených dat. Úspěšné dokončení SendTo metody znamená, že základní systém měl prostor pro ukládání dat do vyrovnávací paměti pro odeslání do sítě.

Pokud používáte protokol bez připojení v režimu blokování, SendTo bude blokování až do odeslání datagramu. 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 se také ujistit, ž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 vyvolá SocketException.

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

SendTo(Byte[], EndPoint)

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

buffer
Byte[]

Pole typu Byte obsahující data, která se mají odeslat.

remoteEP
EndPoint

Hodnota EndPoint , která představuje cíl dat.

Návraty

Počet odeslaných bajtů

Výjimky

buffer je null.

-nebo-

remoteEP je null.

Při pokusu o přístup k soketu došlo k chybě.

Příklady

Následující příklad kódu odešle datagram bez připojení určenému vzdálenému hostiteli.

static void SendTo1()
{
   IPHostEntry^ hostEntry = Dns::Resolve( Dns::GetHostName() );
   IPEndPoint^ endPoint = gcnew IPEndPoint( hostEntry->AddressList[ 0 ],11000 );

   Socket^ s = gcnew Socket( endPoint->Address->AddressFamily,
      SocketType::Dgram,
      ProtocolType::Udp );

   array<Byte>^ msg = Encoding::ASCII->GetBytes( "This is a test" );
   Console::WriteLine( "Sending data." );
   // This call blocks. 
   s->SendTo( msg, endPoint );
   s->Close();
}
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

Při tomto přetížení se vyrovnávací paměť odsadí na hodnotu 0, počet bajtů pro odeslání výchozí hodnoty odpovídá velikosti parametru buffer a SocketFlags výchozí hodnota je 0.

Pokud používáte protokol bez připojení, nemusíte před voláním SendTometody vytvořit výchozího vzdáleného Connect hostitele. Stačí, když chcete metodu Send volat. Pokud zavoláte metodu Connect před voláním SendToremoteEP , parametr přepíše zadaného výchozího vzdáleného hostitele pouze pro danou operaci odeslání. Také nemusíte volat metodu Bind , protože podkladový poskytovatel služeb přiřadí nejvhodnější místní síťovou adresu a číslo portu. Pokud potřebujete identifikovat přiřazenou adresu místní sítě a číslo portu, můžete použít LocalEndPoint vlastnost 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í vzdáleného hostitele voláním Connect metody nebo přijmout příchozí požadavek na připojení pomocí Accept metody . Pokud nenavážete nebo nepřijmete připojení ke vzdálenému hostiteli, SendTo vyvolá se SocketException. Před voláním metody můžete také vytvořit výchozího vzdáleného SendTo 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 budou blokovány, dokud nebudou odeslány všechny bajty ve vyrovnávací paměti. Vzhledem k tomu, že se neodblokování Socket dokončí okamžitě, nemusí odeslat všechny bajty v buffersouboru . Je zodpovědností vaší aplikace sledovat počet odeslaných bajtů a opakovat operaci, dokud aplikace neodešle všechny bajty v buffersouboru . Není také zaručeno, že se odeslaná data zobrazí v síti okamžitě. Za účelem zvýšení efektivity sítě může základní systém zpozdit přenos, dokud se neshromáždí významné množství odchozích dat. Úspěšné dokončení SendTo metody znamená, že základní systém měl prostor pro ukládání dat do vyrovnávací paměti pro odeslání do sítě.

Pokud používáte protokol bez připojení v režimu blokování, SendTo bude blokování až do odeslání datagramu. 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 se také ujistit, ž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 vyvolá SocketException.

Poznámka

Pokud se zobrazí SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, projděte si podrobný popis chyby v dokumentaci k rozhraní API windows Sockets verze 2 .

Poznámka

Tento člen poskytuje trasovací informace, když je ve vaší aplikaci povoleno trasování sítě. Další informace najdete v tématu Trasování sítě v rozhraní .NET Framework.

Viz také

Platí pro

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

Zdroj:
Socket.cs
Zdroj:
Socket.cs
Zdroj:
Socket.cs

Odešle data do konkrétního koncového bodu pomocí zadaného SocketFlagsparametru .

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í data, která mají být odeslána.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

remoteEP
EndPoint

Hodnota EndPoint , která představuje cíl dat.

Návraty

Počet odeslaných bajtů

Výjimky

remoteEP je null.

Při pokusu o přístup k soketu došlo k chybě.

Platí pro