Sdílet prostřednictvím


Socket.Send Metoda

Definice

Odesílá data připojenému Socket.

Přetížení

Name Description
Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Odešle data připojenému Socket pomocí zadaného SocketFlags.

Send(ReadOnlySpan<Byte>)

Odesílá data připojenému Socket.

Send(Byte[], Int32, Int32, SocketFlags, SocketError)

Odešle zadaný počet bajtů dat připojenému Socket, počínaje zadaným posunem a použitím zadaného SocketFlags.

Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

Odešle sadu vyrovnávacích pamětí v seznamu připojenému Socketpomocí zadaného SocketFlags.

Send(Byte[], Int32, Int32, SocketFlags)

Odešle zadaný počet bajtů dat připojenému Socket, počínaje zadaným posunem a použitím zadaného SocketFlags.

Send(Byte[], Int32, SocketFlags)

Pomocí zadaného počtu bajtů dat odešle připojeným Socketdatům zadaný SocketFlagspočet bajtů .

Send(IList<ArraySegment<Byte>>)

Odešle sadu vyrovnávacích pamětí v seznamu připojenému Socket.

Send(IList<ArraySegment<Byte>>, SocketFlags)

Odešle sadu vyrovnávacích pamětí v seznamu připojenému Socketpomocí zadaného SocketFlags.

Send(Byte[], SocketFlags)

Odešle data připojenému Socket pomocí zadaného SocketFlags.

Send(ReadOnlySpan<Byte>, SocketFlags)

Odešle data připojenému Socket pomocí zadaného SocketFlags.

Send(Byte[])

Odesílá data připojenému Socket.

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

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

Odešle data připojenému Socket pomocí zadaného SocketFlags.

public:
 int Send(ReadOnlySpan<System::Byte> buffer, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send(ReadOnlySpan<byte> buffer, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : ReadOnlySpan<byte> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parametry

buffer
ReadOnlySpan<Byte>

Rozsah bajtů obsahujících data, která se mají odeslat.

socketFlags
SocketFlags

Bitová kombinace hodnot výčtu, která určuje chování při odesílání a příjmu.

errorCode
SocketError

Když tato metoda vrátí, obsahuje jednu z hodnot výčtu, která definuje kódy chyb pro soket.

Návraty

Počet bajtů odeslaných do Socket

Výjimky

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

Ta Socket byla uzavřena.

Poznámky

Send synchronně odesílá data vzdálenému hostiteli zadanému Connect v metodě nebo Accept metodě a vrací počet bajtů, které byly úspěšně odeslány. Send lze použít pro protokoly orientované na připojení i bez připojení.

Toto přetížení vyžaduje vyrovnávací paměť obsahující data, která chcete odeslat. Výchozí SocketFlags hodnota je 0, výchozí posun vyrovnávací paměti na 0 a počet bajtů, které se mají odesílat výchozí hodnoty do velikosti vyrovnávací paměti.

Pokud používáte protokol bez připojení, musíte volat Connect před voláním této metody nebo Send vyvolá výjimku SocketException. Pokud používáte protokol orientovaný na připojení, musíte buď vytvořit Connect připojení vzdáleného hostitele, nebo použít Accept k přijetí příchozího připojení.

Pokud používáte protokol bez připojení a plánujete odesílat data do několika různých hostitelů, měli byste použít metodu SendTo . Pokud metodu SendTo nepoužíváte, budete muset volat Connect před každým voláním Send. Můžete použít SendTo i poté, co jste vytvořili výchozího vzdáleného hostitele s Connect. Výchozího vzdáleného hostitele můžete před voláním Send změnit také provedením jiného volání Connect.

Pokud používáte protokol orientovaný na připojení, bude blokovat, Send dokud nebudou odeslány všechny bajty v vyrovnávací paměti, pokud nebyl nastaven časový limit pomocí Socket.SendTimeout. Pokud byla překročena hodnota časového limitu Send , volání vyvolá SocketExceptionchybu . V režimu odblokování se může úspěšně dokončit i v případě, Send že odesílá méně než počet bajtů v vyrovnávací paměti. Je zodpovědností vaší aplikace sledovat počet odeslaných bajtů a opakovat operaci, dokud aplikace neodešle bajty do vyrovnávací paměti. 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í Send 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ě.

Poznámka:

Pokud se zobrazí kód SocketExceptionchyby, 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 chybě rozhraní API windows Sockets verze 2 , kde najdete podrobný popis chyby.

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.

Důležité

Úspěšné dokončení odeslání neznamená, že se data úspěšně doručila. Pokud není v přenosovém systému k dispozici žádné místo vyrovnávací paměti pro uložení přenášených dat, bude odesílání blokovat, pokud není soket umístěn v režimu odblokování.

Viz také

Platí pro

Send(ReadOnlySpan<Byte>)

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

Odesílá data připojenému Socket.

public:
 int Send(ReadOnlySpan<System::Byte> buffer);
public int Send(ReadOnlySpan<byte> buffer);
member this.Send : ReadOnlySpan<byte> -> int
Public Function Send (buffer As ReadOnlySpan(Of Byte)) As Integer

Parametry

buffer
ReadOnlySpan<Byte>

Rozsah bajtů obsahujících data, která se mají odeslat.

Návraty

Počet bajtů odeslaných do Socket

Výjimky

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

Ta Socket byla uzavřena.

Poznámky

Send synchronně odesílá data vzdálenému hostiteli zadanému Connect v metodě nebo Accept metodě a vrací počet bajtů, které byly úspěšně odeslány. Send lze použít pro protokoly orientované na připojení i bez připojení.

Toto přetížení vyžaduje vyrovnávací paměť obsahující data, která chcete odeslat. Výchozí SocketFlags hodnota je 0, výchozí posun vyrovnávací paměti na 0 a počet bajtů, které se mají odesílat výchozí hodnoty do velikosti vyrovnávací paměti.

Pokud používáte protokol bez připojení, musíte volat Connect před voláním této metody nebo Send vyvolá výjimku SocketException. Pokud používáte protokol orientovaný na připojení, musíte buď vytvořit Connect připojení vzdáleného hostitele, nebo použít Accept k přijetí příchozího připojení.

Pokud používáte protokol bez připojení a plánujete odesílat data do několika různých hostitelů, měli byste použít metodu SendTo . Pokud metodu SendTo nepoužíváte, budete muset volat Connect před každým voláním Send. Můžete použít SendTo i po vytvoření výchozího vzdáleného hostitele s Connect. Výchozího vzdáleného hostitele můžete před voláním Send změnit také provedením jiného volání Connect.

Pokud používáte protokol orientovaný na připojení, bude blokovat, Send dokud nebudou odeslány všechny bajty v vyrovnávací paměti, pokud nebyl nastaven časový limit pomocí Socket.SendTimeout. Pokud byla překročena hodnota časového limitu Send , volání vyvolá SocketExceptionchybu . V režimu odblokování se může úspěšně dokončit i v případě, Send že odesílá méně než počet bajtů v vyrovnávací paměti. Je zodpovědností vaší aplikace sledovat počet odeslaných bajtů a opakovat operaci, dokud aplikace neodešle bajty do vyrovnávací paměti. 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í Send 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ě.

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.

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.

Důležité

Úspěšné dokončení odeslání neznamená, že se data úspěšně doručila. Pokud není v přenosovém systému k dispozici žádné místo vyrovnávací paměti pro uložení přenášených dat, bude odesílání blokovat, pokud není soket umístěn v režimu odblokování.

Viz také

Platí pro

Send(Byte[], Int32, Int32, SocketFlags, SocketError)

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

Odešle zadaný počet bajtů dat připojenému Socket, počínaje zadaným posunem a použitím zadaného SocketFlags.

public:
 int Send(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send(byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : byte[] * int * int * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parametry

buffer
Byte[]

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

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.

errorCode
SocketError

Objekt SocketError , který ukládá chybu soketu.

Návraty

Počet bajtů odeslaných do Socket

Výjimky

buffer je null.

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.

Příklady

Následující příklad kódu určuje vyrovnávací paměť dat, posun, velikost a SocketFlags pro odesílání dat do připojeného Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

Poznámky

Send synchronně odesílá data vzdálenému hostiteli zadanému Connect v metodě nebo Accept metodě a vrací počet bajtů, které byly úspěšně odeslány. Send lze použít pro protokoly orientované na připojení i bez připojení.

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í, musíte volat Connect před voláním této metody nebo Send vyvoláte SocketException. Pokud používáte protokol orientovaný na připojení, musíte buď vytvořit Connect připojení ke vzdálenému hostiteli, nebo použít Accept k přijetí příchozího připojení.

Pokud používáte protokol bez připojení a plánujete odesílat data do několika různých hostitelů, měli byste použít SendTo. Pokud nepoužíváte SendTo, budete muset volat Connect před každým voláním Send. Je v pořádku použít SendTo i po vytvoření výchozího vzdáleného hostitele s Connect. Výchozího vzdáleného hostitele můžete před voláním Send změnit také provedením jiného volání Connect.

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 Send vyvolají .SocketException

Pokud používáte protokol orientovaný na připojení, bude blokovat, Send dokud nebude odeslán požadovaný počet bajtů, pokud nebyl nastaven časový limit pomocí Socket.SendTimeout. Pokud byla překročena hodnota časového limitu Send , volání vyvolá SocketExceptionchybu . V režimu odblokování se může úspěšně dokončit, i když odešle méně než počet bajtů, Send které požadujete. 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í Send 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ě.

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:

Úspěšné dokončení odeslání neznamená, že se data úspěšně doručila. Pokud není v přenosovém systému k dispozici žádné místo vyrovnávací paměti pro uložení přenášených dat, bude odesílání blokovat, pokud není soket umístěn v režimu odblokování.

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é

Platí pro

Send(IList<ArraySegment<Byte>>, SocketFlags, SocketError)

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

Odešle sadu vyrovnávacích pamětí v seznamu připojenému Socketpomocí zadaného SocketFlags.

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode);
public int Send(System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError) As Integer

Parametry

buffers
IList<ArraySegment<Byte>>

Seznam ArraySegment<T>typů Byte obsahujících data, která se mají odeslat.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

errorCode
SocketError

Objekt SocketError , který ukládá chybu soketu.

Návraty

Počet bajtů odeslaných do Socket

Výjimky

buffers je null.

buffers je prázdný.

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

Ta Socket byla uzavřena.

Poznámky

Toto přetížení vyžaduje alespoň jednu vyrovnávací paměť obsahující data, která chcete odeslat. Výchozí SocketFlags hodnota je 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í, musíte před voláním této metody volat Connect nebo Send vyvoláte SocketException. Pokud používáte protokol orientovaný na připojení, musíte buď vytvořit Connect připojení ke vzdálenému hostiteli, nebo použít Accept k přijetí příchozího připojení.

Pokud používáte protokol bez připojení a plánujete odesílat data do několika různých hostitelů, měli byste použít metodu SendTo . Pokud metodu SendTo nepoužíváte, budete muset volat Connect před každým voláním Send. Můžete použít SendTo i po vytvoření výchozího vzdáleného hostitele s Connect. Výchozího vzdáleného hostitele můžete před voláním Send změnit také provedením jiného volání Connect.

Pokud používáte protokol orientovaný na připojení, bude blokovat, Send dokud nebudou odeslány všechny bajty v vyrovnávací paměti, pokud nebyl nastaven časový limit pomocí Socket.SendTimeout. Pokud byla překročena hodnota časového limitu Send , volání vyvolá SocketExceptionchybu . V neblokujícím režimu se může úspěšně dokončit i v případě, Send že odesílá méně než počet bajtů v vyrovnávací paměti. Je zodpovědností vaší aplikace sledovat počet odeslaných bajtů a opakovat operaci, dokud aplikace neodešle bajty do vyrovnávací paměti. 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í Send 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ě.

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:

Úspěšné dokončení odeslání neznamená, že se data úspěšně doručila. Pokud není v přenosovém systému k dispozici žádné místo vyrovnávací paměti pro uložení přenášených dat, bude odesílání blokovat, pokud není soket umístěn v režimu odblokování.

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.

Platí pro

Send(Byte[], Int32, Int32, SocketFlags)

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

Odešle zadaný počet bajtů dat připojenému Socket, počínaje zadaným posunem a použitím zadaného SocketFlags.

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

Parametry

buffer
Byte[]

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

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 bajtů odeslaných do Socket

Výjimky

buffer je null.

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.

Příklady

Následující příklad kódu určuje vyrovnávací paměť dat, posun, velikost a SocketFlags pro odesílání dat do připojeného Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer, offset, message size, and socket flags.
public static int SendReceiveTest4(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, 0, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, 0, bytes.Length, SocketFlags.None);

        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, offset, message size, and socket flags.
Public Shared Function SendReceiveTest4(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, 0, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, 0, server.Available, SocketFlags.None)
        
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest4

Poznámky

Send synchronně odesílá data vzdálenému hostiteli zadanému Connect v metodě nebo Accept metodě a vrací počet bajtů, které byly úspěšně odeslány. Send lze použít pro protokoly orientované na připojení i bez připojení.

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í, musíte volat Connect před voláním této metody nebo Send vyvoláte SocketException. Pokud používáte protokol orientovaný na připojení, musíte buď vytvořit Connect připojení ke vzdálenému hostiteli, nebo použít Accept k přijetí příchozího připojení.

Pokud používáte protokol bez připojení a plánujete odesílat data do několika různých hostitelů, měli byste použít SendTo. Pokud nepoužíváte SendTo, budete muset volat Connect před každým voláním Send. Je v pořádku použít SendTo i po vytvoření výchozího vzdáleného hostitele s Connect. Výchozího vzdáleného hostitele můžete před voláním Send změnit také provedením jiného volání Connect.

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 Send vyvolají .SocketException

Pokud používáte protokol orientovaný na připojení, bude blokovat, Send dokud nebude odeslán požadovaný počet bajtů, pokud nebyl nastaven časový limit pomocí Socket.SendTimeout. Pokud byla překročena hodnota časového limitu Send , volání vyvolá SocketExceptionchybu . V režimu odblokování se může úspěšně dokončit, i když odešle méně než počet bajtů, Send které požadujete. 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í Send 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ě.

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:

Úspěšné dokončení odeslání neznamená, že se data úspěšně doručila. Pokud není v přenosovém systému k dispozici žádné místo vyrovnávací paměti pro uložení přenášených dat, bude odesílání blokovat, pokud není soket umístěn v režimu odblokování.

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é

Platí pro

Send(Byte[], Int32, SocketFlags)

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

Pomocí zadaného počtu bajtů dat odešle připojeným Socketdatům zadaný SocketFlagspočet bajtů .

public:
 int Send(cli::array <System::Byte> ^ buffer, int size, System::Net::Sockets::SocketFlags socketFlags);
public int Send(byte[] buffer, int size, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : byte[] * int * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffer As Byte(), size As Integer, socketFlags As SocketFlags) 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.

Návraty

Počet bajtů odeslaných do Socket

Výjimky

buffer je null.

size je menší než 0 nebo překračuje velikost vyrovnávací paměti.

socketFlags není platná kombinace hodnot.

nebo

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

Ta Socket byla uzavřena.

Příklady

Následující příklad kódu odešle data nalezená ve vyrovnávací paměti a určuje None pro SocketFlags.

// Displays sending with a connected socket
// using the overload that takes a buffer, message size, and socket flags.
public static int SendReceiveTest3(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int i = server.Send(msg, msg.Length, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", i);

        // Get reply from the server.
        int byteCount = server.Receive(bytes, bytes.Length, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes, 0, byteCount));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer, message size, and socket flags.
Public Shared Function SendReceiveTest3(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg, msg.Length, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        Dim byteCount As Integer = server.Receive(bytes, server.Available, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest3

Poznámky

Send synchronně odesílá data vzdálenému hostiteli vytvořenému Connect v metodě nebo Accept metodě a vrací počet bajtů, které byly úspěšně odeslány. Send lze použít pro protokoly orientované na připojení i bez připojení.

Toto přetížení vyžaduje vyrovnávací paměť obsahující data, která chcete odeslat, počet bajtů, které chcete odeslat, a bitovou kombinaci libovolného SocketFlags. Pokud jako parametr zadáte DontRoute příznak socketflags , data, která odesíláte, nebudou směrována.

Pokud používáte protokol bez připojení, musíte volat Connect před voláním této metody nebo Send vyvolá výjimku SocketException. Pokud používáte protokol orientovaný na připojení, musíte buď vytvořit Connect připojení vzdáleného hostitele, nebo použít Accept k přijetí příchozího připojení.

Pokud používáte protokol bez připojení a plánujete odesílat data do několika různých hostitelů, měli byste použít metodu SendTo . Pokud metodu SendTo nepoužíváte, budete muset metodu Connect volat před každým voláním Send metody. Můžete použít SendTo i poté, co jste vytvořili výchozího vzdáleného hostitele s Connect. Výchozího vzdáleného hostitele můžete před voláním Send změnit také provedením jiného volání Connect.

Pomocí protokolu orientovaného na připojení bude blokovat, Send dokud se neposílají požadovaný počet bajtů, pokud nebyl nastaven časový limit pomocí Socket.SendTimeout. Pokud byla překročena hodnota časového limitu Send , volání vyvolá SocketExceptionchybu . V režimu odblokování se může úspěšně dokončit, i když odešle méně než počet bajtů, Send které požadujete. 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í Send 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ě.

Poznámka:

Musíte zajistit, aby velikost nepřekračovala maximální velikost paketů příslušného poskytovatele služeb. Pokud ano, datagram se neodesílají a Send vyvolají výjimku SocketException. 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.

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.

Důležité

Úspěšné dokončení odeslání neznamená, že se data úspěšně doručila. Pokud není v přenosovém systému k dispozici žádné místo vyrovnávací paměti pro uložení přenášených dat, bude odesílání blokovat, pokud není soket umístěn v režimu odblokování.

Viz také

Platí pro

Send(IList<ArraySegment<Byte>>)

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

Odešle sadu vyrovnávacích pamětí v seznamu připojenému Socket.

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers);
public int Send(System.Collections.Generic.IList<ArraySegment<byte>> buffers);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte))) As Integer

Parametry

buffers
IList<ArraySegment<Byte>>

Seznam ArraySegment<T>typů Byte obsahujících data, která se mají odeslat.

Návraty

Počet bajtů odeslaných do Socket

Výjimky

buffers je null.

buffers je prázdný.

Při pokusu o přístup k soketu došlo k chybě. Viz část s poznámkami níže.

Ta Socket byla uzavřena.

Poznámky

Send lze použít pro protokoly orientované na připojení i bez připojení.

Toto přetížení vyžaduje alespoň jednu vyrovnávací paměť obsahující data, která chcete odeslat.

Pokud používáte protokol bez připojení, musíte před voláním této metody volat Connect nebo Send vyvoláte SocketException. Pokud používáte protokol orientovaný na připojení, musíte buď vytvořit Connect připojení ke vzdálenému hostiteli, nebo použít Accept k přijetí příchozího připojení.

Pokud používáte protokol bez připojení a plánujete odesílat data do několika různých hostitelů, měli byste použít metodu SendTo . Pokud metodu SendTo nepoužíváte, budete muset volat Connect před každým voláním Send. Můžete použít SendTo i po vytvoření výchozího vzdáleného hostitele s Connect. Výchozího vzdáleného hostitele můžete před voláním Send změnit také provedením jiného volání Connect.

Pokud používáte protokol orientovaný na připojení, bude blokovat, Send dokud nebudou odeslány všechny bajty v vyrovnávací paměti, pokud nebyl nastaven časový limit pomocí Socket.SendTimeout. Pokud byla překročena hodnota časového limitu Send , volání vyvolá SocketExceptionchybu . V režimu odblokování se může úspěšně dokončit i v případě, Send že odesílá méně než počet bajtů v vyrovnávací paměti. Je zodpovědností vaší aplikace sledovat počet odeslaných bajtů a opakovat operaci, dokud aplikace neodešle bajty do vyrovnávací paměti. 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í Send 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ě.

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:

Úspěšné dokončení odeslání neznamená, že se data úspěšně doručila. Pokud není v přenosovém systému k dispozici žádné místo vyrovnávací paměti pro uložení přenášených dat, bude odesílání blokovat, pokud není soket umístěn v režimu odblokování.

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.

Platí pro

Send(IList<ArraySegment<Byte>>, SocketFlags)

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

Odešle sadu vyrovnávacích pamětí v seznamu připojenému Socketpomocí zadaného SocketFlags.

public:
 int Send(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags);
public int Send(System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags);
member this.Send : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags -> int
Public Function Send (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags) As Integer

Parametry

buffers
IList<ArraySegment<Byte>>

Seznam ArraySegment<T>typů Byte obsahujících data, která se mají odeslat.

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

Návraty

Počet bajtů odeslaných do Socket

Výjimky

buffers je null.

buffers je prázdný.

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

Ta Socket byla uzavřena.

Poznámky

Toto přetížení vyžaduje alespoň jednu vyrovnávací paměť obsahující data, která chcete odeslat. Výchozí SocketFlags hodnota je 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í, musíte před voláním této metody volat Connect nebo Send vyvoláte SocketException. Pokud používáte protokol orientovaný na připojení, musíte buď vytvořit Connect připojení ke vzdálenému hostiteli, nebo použít Accept k přijetí příchozího připojení.

Pokud používáte protokol bez připojení a plánujete odesílat data do několika různých hostitelů, měli byste použít metodu SendTo . Pokud metodu SendTo nepoužíváte, budete muset volat Connect před každým voláním Send. Můžete použít SendTo i po vytvoření výchozího vzdáleného hostitele s Connect. Výchozího vzdáleného hostitele můžete před voláním Send změnit také provedením jiného volání Connect.

Pokud používáte protokol orientovaný na připojení, bude blokovat, Send dokud nebudou odeslány všechny bajty v vyrovnávací paměti, pokud nebyl nastaven časový limit pomocí Socket.SendTimeout. Pokud byla překročena hodnota časového limitu Send , volání vyvolá SocketExceptionchybu . V neblokujícím režimu se může úspěšně dokončit i v případě, Send že odesílá méně než počet bajtů v vyrovnávací paměti. Je zodpovědností vaší aplikace sledovat počet odeslaných bajtů a opakovat operaci, dokud aplikace neodešle bajty do vyrovnávací paměti. 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í Send 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ě.

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:

Úspěšné dokončení odeslání neznamená, že se data úspěšně doručila. Pokud není v přenosovém systému k dispozici žádné místo vyrovnávací paměti pro uložení přenášených dat, bude odesílání blokovat, pokud není soket umístěn v režimu odblokování.

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.

Platí pro

Send(Byte[], SocketFlags)

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

Odešle data připojenému Socket pomocí zadaného SocketFlags.

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

Parametry

buffer
Byte[]

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

socketFlags
SocketFlags

Bitové kombinace SocketFlags hodnot.

Návraty

Počet bajtů odeslaných do Socket

Výjimky

buffer 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 ukazuje odesílání dat na připojeném Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer and socket flags.
public static int SendReceiveTest2(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int byteCount = server.Send(msg, SocketFlags.None);
        Console.WriteLine("Sent {0} bytes.", byteCount);

        // Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None);
        if (byteCount > 0)
            Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer and socket flags.
Public Shared Function SendReceiveTest2(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim byteCount As Integer = server.Send(msg, SocketFlags.None)
        Console.WriteLine("Sent {0} bytes.", byteCount)
        
        ' Get reply from the server.
        byteCount = server.Receive(bytes, SocketFlags.None)
        If byteCount > 0 Then
            Console.WriteLine(Encoding.UTF8.GetString(bytes))
        End If
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest2

Poznámky

Send synchronně odesílá data vzdálenému hostiteli vytvořenému Connect v metodě nebo Accept metodě a vrací počet bajtů, které byly úspěšně odeslány. Tuto metodu Send lze použít pro protokoly orientované na připojení i bez připojení.

Toto přetížení vyžaduje vyrovnávací paměť obsahující data, která chcete odeslat, a bitovou kombinaci SocketFlags. Posun vyrovnávací paměti je výchozí na 0 a počet bajtů, které se mají odesílat výchozí hodnoty do velikosti vyrovnávací paměti. Pokud jako hodnotu parametru DontRoutesocketflags zadáte příznak, data, která odesíláte, nebudou směrována.

Pokud používáte protokol bez připojení, musíte před voláním této metody volat Connect nebo Send vyvoláte SocketException. Pokud používáte protokol orientovaný na připojení, musíte buď vytvořit Connect připojení ke vzdálenému hostiteli, nebo použít Accept k přijetí příchozího připojení.

Pokud používáte protokol bez připojení a plánujete odesílat data do několika různých hostitelů, měli byste použít metodu SendTo . Pokud metodu SendTo nepoužíváte, budete muset volat metodu Connect před každým voláním Send. Můžete použít SendTo i po vytvoření výchozího vzdáleného hostitele s Connect. Výchozího vzdáleného hostitele můžete před voláním Send změnit také provedením jiného volání Connect.

Pokud používáte protokol orientovaný na připojení, bude blokovat, Send dokud nebudou odeslány všechny bajty v vyrovnávací paměti, pokud nebyl nastaven časový limit pomocí Socket.SendTimeout. Pokud byla překročena hodnota časového limitu Send , volání vyvolá SocketExceptionchybu . V režimu odblokování se může úspěšně dokončit i v případě, Send že odesílá méně než počet bajtů v vyrovnávací paměti. 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í Send 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ě.

Poznámka:

Musíte zajistit, aby velikost vyrovnávací paměti nepřekračovala maximální velikost paketů příslušného poskytovatele služeb. Pokud ano, datagram se neodesílají a Send vyvolají .SocketException 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:

Úspěšné dokončení odeslání neznamená, že se data úspěšně doručila. Pokud není v přenosovém systému k dispozici žádné místo vyrovnávací paměti pro uložení přenášených dat, bude odesílání blokovat, pokud není soket umístěn v režimu odblokování.

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é

Platí pro

Send(ReadOnlySpan<Byte>, SocketFlags)

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

Odešle data připojenému Socket pomocí zadaného SocketFlags.

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

Parametry

buffer
ReadOnlySpan<Byte>

Rozsah bajtů obsahujících data, která se mají odeslat.

socketFlags
SocketFlags

Bitová kombinace hodnot výčtu, která určuje chování při odesílání a příjmu.

Návraty

Počet bajtů odeslaných do Socket

Výjimky

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

Ta Socket byla uzavřena.

Viz také

Platí pro

Send(Byte[])

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

Odesílá data připojenému Socket.

public:
 int Send(cli::array <System::Byte> ^ buffer);
public int Send(byte[] buffer);
member this.Send : byte[] -> int
Public Function Send (buffer As Byte()) As Integer

Parametry

buffer
Byte[]

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

Návraty

Počet bajtů odeslaných do Socket

Výjimky

buffer 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 ukazuje odesílání dat na připojeném Socket.

// Displays sending with a connected socket
// using the overload that takes a buffer.
public static int SendReceiveTest1(Socket server)
{
    byte[] msg = Encoding.UTF8.GetBytes("This is a test");
    byte[] bytes = new byte[256];
    try
    {
        // Blocks until send returns.
        int i = server.Send(msg);
        Console.WriteLine("Sent {0} bytes.", i);

        // Get reply from the server.
        i = server.Receive(bytes);
        Console.WriteLine(Encoding.UTF8.GetString(bytes));
    }
    catch (SocketException e)
    {
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode);
        return (e.ErrorCode);
    }
    return 0;
}
' Displays sending with a connected socket
' using the overload that takes a buffer.
Public Shared Function SendReceiveTest1(ByVal server As Socket) As Integer 
    Dim msg As Byte() = Encoding.UTF8.GetBytes("This is a test")
    Dim bytes(255) As Byte
    Try
        ' Blocks until send returns.
        Dim i As Integer = server.Send(msg)
        Console.WriteLine("Sent {0} bytes.", i)
        
        ' Get reply from the server.
        i = server.Receive(bytes)
        Console.WriteLine(Encoding.UTF8.GetString(bytes))
    Catch e As SocketException
        Console.WriteLine("{0} Error code: {1}.", e.Message, e.ErrorCode)
        Return e.ErrorCode
    End Try
    Return 0

End Function 'SendReceiveTest1

Poznámky

Send synchronně odesílá data vzdálenému hostiteli zadanému Connect v metodě nebo Accept metodě a vrací počet bajtů, které byly úspěšně odeslány. Send lze použít pro protokoly orientované na připojení i bez připojení.

Toto přetížení vyžaduje vyrovnávací paměť obsahující data, která chcete odeslat. Výchozí SocketFlags hodnota je 0, výchozí posun vyrovnávací paměti na 0 a počet bajtů, které se mají odesílat výchozí hodnoty do velikosti vyrovnávací paměti.

Pokud používáte protokol bez připojení, musíte před voláním této metody volat Connect nebo Send vyvoláte SocketException. Pokud používáte protokol orientovaný na připojení, musíte buď vytvořit Connect připojení ke vzdálenému hostiteli, nebo použít Accept k přijetí příchozího připojení.

Pokud používáte protokol bez připojení a plánujete odesílat data do několika různých hostitelů, měli byste použít metodu SendTo . Pokud metodu SendTo nepoužíváte, budete muset volat Connect před každým voláním Send. Můžete použít SendTo i po vytvoření výchozího vzdáleného hostitele s Connect. Výchozího vzdáleného hostitele můžete před voláním Send změnit také provedením jiného volání Connect.

Pokud používáte protokol orientovaný na připojení, bude blokovat, Send dokud nebudou odeslány všechny bajty v vyrovnávací paměti, pokud nebyl nastaven časový limit pomocí Socket.SendTimeout. Pokud byla překročena hodnota časového limitu Send , volání vyvolá SocketExceptionchybu . V režimu odblokování se může úspěšně dokončit i v případě, Send že odesílá méně než počet bajtů v vyrovnávací paměti. Je zodpovědností vaší aplikace sledovat počet odeslaných bajtů a opakovat operaci, dokud aplikace neodešle bajty do vyrovnávací paměti. 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í Send 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ě.

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:

Úspěšné dokončení odeslání neznamená, že se data úspěšně doručila. Pokud není v přenosovém systému k dispozici žádné místo vyrovnávací paměti pro uložení přenášených dat, bude odesílání blokovat, pokud není soket umístěn v režimu odblokování.

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é

Platí pro