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 použitím zadaného SocketFlags.

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

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

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

Odesílá 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[], EndPoint)

Odešle data do zadaného koncového bodu.

SendTo(Byte[], SocketFlags, EndPoint)

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

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

buffer
Byte[]

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

offset
Int32

Pozice ve 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.

remoteEP
EndPoint

To EndPoint představuje cílové umístění dat.

Návraty

Int32

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 buffer mínus hodnoty parametru offset .

socketFlags není platná kombinace hodnot.

-nebo-

Při přístupu k systému 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í zadanému vzdálenému hostiteli. Posun, velikost a SocketFlags předání metodě SendTo .

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 parametr, nebudou socketflags se směrovat data, která odesíláte.

Pokud používáte protokol bez připojení, není nutné vytvořit výchozí vzdáleného hostitele s metodou Connect před voláním SendTo. To stačí 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í. Tuto metodu Bind také nemusíte volat, protože příslušný 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í vzdáleného Connect hostitele voláním 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 SendTo metody můžete také vytvořit výchozího vzdáleného hostitele pro protokol bez připojení. V některém z těchto případů SendTo bude parametr ignorovat remoteEP a odesílat data jenom připojenému nebo výchozímu vzdálenému hostiteli.

Blokování soketů se zablokuje, dokud nebude odeslán požadovaný počet bajtů. Vzhledem k tomu, že se neblokuje Socket okamžitě, nemusí posílat všechny bajty požadované v jedné operaci. Za sledování počtu bajtů odeslaných 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 prostor 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 až do odeslání datagramu. Pokud chcete odesílat data na adresu 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 vyvolá SocketException.

Poznámka

Pokud se zobrazí zpráva SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Po získání tohoto kódu si projděte dokumentaci k chybě rozhraní API verze Windows Sockets verze 2, kde najdete podrobný popis chyby.

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)

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á se mají odeslat.

size
Int32

Počet bajtů, které se mají odeslat.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

remoteEP
EndPoint

To EndPoint představuje cílové umístění dat.

Návraty

Int32

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

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ředají se metodě SendTo .

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

V tomto přetížení se vyrovnávací paměť ve výchozím nastavení posune na 0. Pokud jako parametr zadáte DontRoute příznak socketflags , nebudou se směrovat data, která odesíláte.

Pokud používáte protokol bez připojení, není nutné vytvořit výchozí vzdáleného hostitele s metodou Connect před voláním SendTo. To stačí 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í. Tuto metodu Bind také nemusíte volat, protože příslušný 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í vzdáleného Connect hostitele voláním 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 SendTo metody můžete také vytvořit výchozího vzdáleného hostitele pro protokol bez připojení. V některém z těchto případů 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 odbloková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ů. Není také 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 zpožďovat 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 prostor ukládat data do vyrovnávací paměti pro odesílání do sítě.

Pokud používáte protokol bez připojení v režimu blokování, SendTo zablokuje se, dokud se datagram odeš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é 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 vyvolá SocketException.

Poznámka

Pokud obdržíte kód chyby SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, přečtěte si dokumentaci k kódu chyby rozhraní API Windows Sockets verze 2, kde najdete podrobný popis chyby.

Poznámka

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

Viz také

Platí pro

SendTo(ReadOnlySpan<Byte>, SocketFlags, EndPoint)

Odesílá 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.

remoteEP
EndPoint

To EndPoint představuje cíl pro data.

Návraty

Int32

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(ReadOnlySpan<Byte>, EndPoint)

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.

remoteEP
EndPoint

To EndPoint představuje cíl pro data.

Návraty

Int32

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[], EndPoint)

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

To EndPoint představuje cíl pro data.

Návraty

Int32

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

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.

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

V tomto přetížení se výchozí hodnota vyrovnávací paměti posune 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í, není nutné vytvořit výchozí vzdáleného hostitele s metodou Connect před voláním SendTo. To stačí 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í. Tuto metodu Bind také nemusíte volat, protože příslušný 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í vzdáleného Connect hostitele voláním 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 SendTo metody můžete také vytvořit výchozího vzdáleného hostitele pro protokol bez připojení. V některém z těchto případů SendTo bude parametr ignorovat remoteEP a odesílat data pouze připojenému nebo výchozímu vzdálenému hostiteli.

Blokovací sokety se zablokují, dokud se nebudou odesílat 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 buffersouboru . Je zodpovědností vaší aplikace sledovat počet odeslaných bajtů a opakovat operaci, dokud aplikace neodešle všechny bajty v souboru buffer. Není také 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 prostor ukládat data do vyrovnávací paměti pro odesílání do sítě.

Pokud používáte protokol bez připojení v režimu blokování, SendTo zablokuje se, dokud se datagram odeš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é 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 vyvolá SocketException.

Poznámka

Pokud obdržíte kód chyby SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, přečtěte si dokumentaci k kódu chyby rozhraní API Windows Sockets verze 2, kde najdete podrobný popis chyby.

Poznámka

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

Viz také

Platí pro

SendTo(Byte[], SocketFlags, EndPoint)

Odesílá 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

buffer
Byte[]

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

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

remoteEP
EndPoint

To EndPoint představuje cílové umístění dat.

Návraty

Int32

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

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

V tomto přetížení se vyrovnávací paměť ve výchozím nastavení odsadí na 0 a počet bajtů, které mají odesílat výchozí hodnoty velikosti buffer. Pokud jako parametr zadáte DontRoute příznak socketflags , nebudou se směrovat data, která odesíláte.

Pokud používáte protokol bez připojení, není nutné vytvořit výchozí vzdáleného hostitele s metodou Connect před voláním SendTo. To stačí 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í. Tuto metodu Bind také nemusíte volat, protože příslušný 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í vzdáleného Connect hostitele voláním 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 SendTo metody můžete také vytvořit výchozího vzdáleného hostitele pro protokol bez připojení. V některém z těchto případů 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 souboru buffer . Vzhledem k tomu, že se odblokování Socket dokončí okamžitě, nemusí odesílat 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 souboru buffer. Není také 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 zpožďovat 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 prostor ukládat data do vyrovnávací paměti pro odesílání do sítě.

Pokud používáte protokol bez připojení v režimu blokování, SendTo zablokuje se, dokud se datagram odeš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é 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 vyvolá SocketException.

Poznámka

Pokud obdržíte kód chyby SocketException, použijte SocketException.ErrorCode vlastnost k získání konkrétního kódu chyby. Jakmile tento kód získáte, přečtěte si dokumentaci k kódu chyby rozhraní API Windows Sockets verze 2, kde najdete podrobný popis chyby.

Poznámka

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

Viz také

Platí pro