Udostępnij za pośrednictwem


Socket.Send Metoda

Definicja

Wysyła dane do połączonego Socketobiektu .

Przeciążenia

Nazwa Opis
Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Wysyła dane do połączonego Socket przy użyciu określonego SocketFlagselementu .

Send(ReadOnlySpan<Byte>)

Wysyła dane do połączonego Socketobiektu .

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

Wysyła określoną liczbę bajtów danych do połączonego Socket, rozpoczynając od określonego przesunięcia i używając określonego SocketFlags.

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

Wysyła zestaw buforów na liście do połączonego Socketobiektu przy użyciu określonego SocketFlagselementu .

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

Wysyła określoną liczbę bajtów danych do połączonego Socket, rozpoczynając od określonego przesunięcia i używając określonego SocketFlags.

Send(Byte[], Int32, SocketFlags)

Wysyła określoną liczbę bajtów danych do połączonego Socketobiektu przy użyciu określonego SocketFlagselementu .

Send(IList<ArraySegment<Byte>>)

Wysyła zestaw buforów na liście do połączonego Socketelementu .

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

Wysyła zestaw buforów na liście do połączonego Socketobiektu przy użyciu określonego SocketFlagselementu .

Send(Byte[], SocketFlags)

Wysyła dane do połączonego Socket przy użyciu określonego SocketFlagselementu .

Send(ReadOnlySpan<Byte>, SocketFlags)

Wysyła dane do połączonego Socket przy użyciu określonego SocketFlagselementu .

Send(Byte[])

Wysyła dane do połączonego Socketobiektu .

Send(ReadOnlySpan<Byte>, SocketFlags, SocketError)

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Wysyła dane do połączonego Socket przy użyciu określonego SocketFlagselementu .

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>

Zakres bajtów, który zawiera dane do wysłania.

socketFlags
SocketFlags

Bitowa kombinacja wartości wyliczenia, która określa zachowania wysyłania i odbierania.

errorCode
SocketError

Gdy ta metoda zostanie zwrócona, zawiera jedną z wartości wyliczenia, która definiuje kody błędów dla gniazda.

Zwraca

Liczba bajtów wysłanych do obiektu Socket.

Wyjątki

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Element Socket został zamknięty.

Uwagi

Send synchronicznie wysyła dane do hosta zdalnego określonego Connect w metodzie or Accept i zwraca liczbę bajtów, które zostały pomyślnie wysłane. Send można używać zarówno w przypadku protokołów zorientowanych na połączenia, jak i bez połączenia.

To przeciążenie wymaga buforu zawierającego dane, które chcesz wysłać. Wartość domyślna SocketFlags to 0, domyślnie przesunięcie buforu wynosi 0, a liczba bajtów do wysłania wartości domyślnych do rozmiaru buforu.

Jeśli używasz protokołu bez połączenia, musisz wywołać Connect metodę przed wywołaniem tej metody lub Send zgłosi błąd SocketException. Jeśli używasz protokołu zorientowanego na połączenie, musisz użyć Connect polecenia w celu nawiązania połączenia zdalnego hosta lub użyć polecenia Accept , aby zaakceptować połączenie przychodzące.

Jeśli używasz protokołu bez połączenia i planujesz wysyłać dane do kilku różnych hostów, należy użyć SendTo metody . Jeśli nie używasz SendTo metody , musisz wywołać metodę przed każdym wywołaniem Connect metody Send. Możesz użyć SendTo nawet po ustanowieniu domyślnego hosta zdalnego za pomocą polecenia Connect. Można również zmienić domyślnego hosta zdalnego przed wywołaniem Send przez wykonanie innego wywołania metody Connect.

Jeśli używasz protokołu zorientowanego na połączenie, Send zablokuje wartość do momentu wysłania wszystkich bajtów w buforze, chyba że limit czasu został ustawiony przy użyciu polecenia Socket.SendTimeout. Jeśli wartość limitu czasu została przekroczona, Send wywołanie zwróci SocketExceptionwartość . W trybie bezblokowania może zakończyć się pomyślnie, Send nawet jeśli wysyła mniej niż liczba bajtów w buforze. Aplikacja jest odpowiedzialna za śledzenie liczby wysłanych bajtów i ponawianie próby wykonania operacji do momentu wysłania bajtów w buforze przez aplikację. Nie ma również gwarancji, że wysyłane dane będą natychmiast wyświetlane w sieci. Aby zwiększyć wydajność sieci, podstawowy system może opóźnić transmisję do momentu zebrania znacznej ilości danych wychodzących. Pomyślne ukończenie Send metody oznacza, że podstawowy system miał miejsce na buforować dane dla wysyłania sieciowego.

Uwaga / Notatka

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API windows Sockets w wersji 2 , aby uzyskać szczegółowy opis błędu.

Ten członek generuje dane śledzenia po włączeniu śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w programie .NET Framework.

Ważna

Pomyślne ukończenie wysyłania nie oznacza, że dane zostały pomyślnie dostarczone. Jeśli w systemie transportu nie ma dostępnego miejsca buforowego do przechowywania danych do przesyłania, wyślij blok, chyba że gniazdo zostało umieszczone w trybie nieblokowania.

Zobacz też

Dotyczy

Send(ReadOnlySpan<Byte>)

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Wysyła dane do połączonego Socketobiektu .

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>

Zakres bajtów, który zawiera dane do wysłania.

Zwraca

Liczba bajtów wysłanych do obiektu Socket.

Wyjątki

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Element Socket został zamknięty.

Uwagi

Send synchronicznie wysyła dane do hosta zdalnego określonego Connect w metodzie or Accept i zwraca liczbę bajtów, które zostały pomyślnie wysłane. Send można używać zarówno w przypadku protokołów zorientowanych na połączenia, jak i bez połączenia.

To przeciążenie wymaga buforu zawierającego dane, które chcesz wysłać. Wartość domyślna SocketFlags to 0, domyślnie przesunięcie buforu wynosi 0, a liczba bajtów do wysłania wartości domyślnych do rozmiaru buforu.

Jeśli używasz protokołu bez połączenia, musisz wywołać Connect metodę przed wywołaniem tej metody lub Send zgłosi błąd SocketException. Jeśli używasz protokołu zorientowanego na połączenie, musisz użyć Connect polecenia w celu nawiązania połączenia zdalnego hosta lub użyć polecenia Accept , aby zaakceptować połączenie przychodzące.

Jeśli używasz protokołu bez połączenia i planujesz wysyłać dane do kilku różnych hostów, należy użyć SendTo metody . Jeśli nie używasz SendTo metody , musisz wywołać metodę przed każdym wywołaniem Connect metody Send. Możesz użyć SendTo nawet po ustanowieniu domyślnego hosta zdalnego za pomocą polecenia Connect. Można również zmienić domyślnego hosta zdalnego przed wywołaniem Send przez wykonanie innego wywołania metody Connect.

Jeśli używasz protokołu zorientowanego na połączenie, Send zablokuje wartość do momentu wysłania wszystkich bajtów w buforze, chyba że limit czasu został ustawiony przy użyciu polecenia Socket.SendTimeout. Jeśli wartość limitu czasu została przekroczona, Send wywołanie zwróci SocketExceptionwartość . W trybie bezblokowania może zakończyć się pomyślnie, Send nawet jeśli wysyła mniej niż liczba bajtów w buforze. Aplikacja jest odpowiedzialna za śledzenie liczby wysłanych bajtów i ponawianie próby wykonania operacji do momentu wysłania bajtów w buforze przez aplikację. Nie ma również gwarancji, że wysyłane dane będą natychmiast wyświetlane w sieci. Aby zwiększyć wydajność sieci, podstawowy system może opóźnić transmisję do momentu zebrania znacznej ilości danych wychodzących. Pomyślne ukończenie Send metody oznacza, że podstawowy system miał miejsce na buforować dane dla wysyłania sieciowego.

Uwaga / Notatka

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API windows Sockets w wersji 2 , aby uzyskać szczegółowy opis błędu.

Ten członek generuje dane śledzenia po włączeniu śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w programie .NET Framework.

Ważna

Pomyślne ukończenie wysyłania nie oznacza, że dane zostały pomyślnie dostarczone. Jeśli w systemie transportu nie ma dostępnego miejsca buforowego do przechowywania danych do przesyłania, wyślij blok, chyba że gniazdo zostało umieszczone w trybie nieblokowania.

Zobacz też

Dotyczy

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

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Wysyła określoną liczbę bajtów danych do połączonego Socket, rozpoczynając od określonego przesunięcia i używając określonego 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[]

Tablica typu Byte zawierająca dane do wysłania.

offset
Int32

Położenie w buforze danych, w którym należy rozpocząć wysyłanie danych.

size
Int32

Liczba bajtów do wysłania.

socketFlags
SocketFlags

Bitowa kombinacja SocketFlags wartości.

errorCode
SocketError

SocketError Obiekt, który przechowuje błąd gniazda.

Zwraca

Liczba bajtów wysłanych do obiektu Socket.

Wyjątki

Parametr buffer ma wartość null.

offset wartość jest mniejsza niż 0.

— lub —

offsetwartość jest większa niż długość .buffer

— lub —

size wartość jest mniejsza niż 0.

— lub —

size parametr jest większy niż długość buffer minus wartość parametru offset .

socketFlags nie jest prawidłową kombinacją wartości.

— lub —

Wystąpił błąd systemu operacyjnego podczas uzyskiwania dostępu do elementu Socket.

Element Socket został zamknięty.

Przykłady

Poniższy przykład kodu określa bufor danych, przesunięcie, rozmiar i SocketFlags wysyłanie danych do połączonego Socketelementu .

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

Uwagi

Send synchronicznie wysyła dane do hosta zdalnego określonego Connect w metodzie or Accept i zwraca liczbę bajtów, które zostały pomyślnie wysłane. Send można używać zarówno w przypadku protokołów zorientowanych na połączenia, jak i bez połączenia.

W tym przeciążeniu, jeśli określisz flagę DontRoute jako socketflags parametr, wysyłane dane nie będą kierowane.

Jeśli używasz protokołu bez połączenia, musisz wywołać Connect metodę przed wywołaniem tej metody lub Send zgłosi błąd SocketException. Jeśli używasz protokołu zorientowanego na połączenie, musisz użyć Connect polecenia w celu nawiązania połączenia zdalnego hosta lub użyć polecenia Accept , aby zaakceptować połączenie przychodzące.

Jeśli używasz protokołu bez połączenia i planujesz wysyłanie danych do kilku różnych hostów, użyj polecenia SendTo. Jeśli nie używasz SendTometody , musisz wywołać Connect metodę przed każdym wywołaniem metody .Send Można go użyć SendTo nawet po ustanowieniu domyślnego hosta zdalnego za pomocą polecenia Connect. Można również zmienić domyślnego hosta zdalnego przed wywołaniem przez Send wykonanie innego wywołania metody Connect.

Należy również upewnić się, że rozmiar nie przekracza maksymalnego rozmiaru pakietu bazowego dostawcy usług. Jeśli tak, datagram nie zostanie wysłany i Send zgłosi wartość SocketException.

Jeśli używasz protokołu zorientowanego na połączenie, Send zablokuje wartość do momentu wysłania żądanej liczby bajtów, chyba że limit czasu został ustawiony przy użyciu polecenia Socket.SendTimeout. Jeśli wartość limitu czasu została przekroczona, Send wywołanie zwróci SocketExceptionwartość . W trybie bezblokowania może zakończyć się pomyślnie, Send nawet jeśli wysyła mniej niż liczba żądań bajtów. Aplikacja jest odpowiedzialna za śledzenie liczby wysłanych bajtów i ponawianie próby wykonania operacji do momentu wysłania żądanej liczby bajtów przez aplikację. Nie ma również gwarancji, że wysyłane dane będą natychmiast wyświetlane w sieci. Aby zwiększyć wydajność sieci, podstawowy system może opóźnić transmisję do momentu zebrania znacznej ilości danych wychodzących. Pomyślne ukończenie Send metody oznacza, że podstawowy system miał miejsce na buforować dane dla wysyłania sieciowego.

Uwaga / Notatka

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API windows Sockets w wersji 2 , aby uzyskać szczegółowy opis błędu.

Uwaga / Notatka

Pomyślne ukończenie wysyłania nie oznacza, że dane zostały pomyślnie dostarczone. Jeśli w systemie transportu nie ma dostępnego miejsca buforowego do przechowywania danych do przesyłania, wyślij blok, chyba że gniazdo zostało umieszczone w trybie nieblokowania.

Uwaga / Notatka

Ten członek generuje dane śledzenia po włączeniu śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w programie .NET Framework.

Zobacz też

Dotyczy

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

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Wysyła zestaw buforów na liście do połączonego Socketobiektu przy użyciu określonego SocketFlagselementu .

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

Lista typówArraySegment<T>Byte, która zawiera dane do wysłania.

socketFlags
SocketFlags

Bitowa kombinacja SocketFlags wartości.

errorCode
SocketError

SocketError Obiekt, który przechowuje błąd gniazda.

Zwraca

Liczba bajtów wysłanych do obiektu Socket.

Wyjątki

Parametr buffers ma wartość null.

buffers jest pusta.

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Element Socket został zamknięty.

Uwagi

To przeciążenie wymaga co najmniej jednego buforu zawierającego dane, które chcesz wysłać. Wartość domyślna SocketFlags to 0. Jeśli określisz flagę DontRoute jako socketFlags parametr, wysyłane dane nie będą kierowane.

Jeśli używasz protokołu bez połączenia, musisz wywołać Connect metodę przed wywołaniem tej metody lub Send zgłosi błąd SocketException. Jeśli używasz protokołu zorientowanego na połączenie, musisz użyć Connect polecenia w celu nawiązania połączenia zdalnego hosta lub użyć polecenia Accept , aby zaakceptować połączenie przychodzące.

Jeśli używasz protokołu bez połączenia i planujesz wysyłać dane na kilka różnych hostów, należy użyć SendTo metody . Jeśli nie używasz SendTo metody , musisz wywołać Connect metodę przed każdym wywołaniem metody Send. Możesz użyć SendTo nawet po ustanowieniu domyślnego hosta zdalnego za pomocą polecenia Connect. Można również zmienić domyślnego hosta zdalnego przed wywołaniem przez Send wykonanie innego wywołania metody Connect.

Jeśli używasz protokołu zorientowanego na połączenie, Send będzie blokować do momentu wysłania wszystkich bajtów w buforze, chyba że limit czasu został ustawiony przy użyciu polecenia Socket.SendTimeout. Jeśli wartość limitu czasu została przekroczona, Send wywołanie zwróci SocketExceptionwartość . W trybie nieblokacyjnym może zakończyć się pomyślnie, Send nawet jeśli liczba bajtów w buforze będzie mniejsza niż liczba bajtów. Aplikacja jest odpowiedzialna za śledzenie liczby wysłanych bajtów i ponawianie próby wykonania operacji do momentu wysłania bajtów w buforze przez aplikację. Nie ma również gwarancji, że wysyłane dane będą natychmiast wyświetlane w sieci. Aby zwiększyć wydajność sieci, podstawowy system może opóźnić transmisję do momentu zebrania znacznej ilości danych wychodzących. Pomyślne ukończenie Send metody oznacza, że podstawowy system miał miejsce na buforować dane dla wysyłania sieciowego.

Uwaga / Notatka

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API windows Sockets w wersji 2 , aby uzyskać szczegółowy opis błędu.

Uwaga / Notatka

Pomyślne ukończenie wysyłania nie oznacza, że dane zostały pomyślnie dostarczone. Jeśli w systemie transportu nie ma dostępnego miejsca buforowego do przechowywania danych do przesyłania, wyślij blok, chyba że gniazdo zostało umieszczone w trybie nieblokowania.

Uwaga / Notatka

Ten członek generuje dane śledzenia po włączeniu śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w programie .NET Framework.

Dotyczy

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

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Wysyła określoną liczbę bajtów danych do połączonego Socket, rozpoczynając od określonego przesunięcia i używając określonego 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[]

Tablica typu Byte zawierająca dane do wysłania.

offset
Int32

Położenie w buforze danych, w którym należy rozpocząć wysyłanie danych.

size
Int32

Liczba bajtów do wysłania.

socketFlags
SocketFlags

Bitowa kombinacja SocketFlags wartości.

Zwraca

Liczba bajtów wysłanych do obiektu Socket.

Wyjątki

Parametr buffer ma wartość null.

offset wartość jest mniejsza niż 0.

— lub —

offsetwartość jest większa niż długość .buffer

— lub —

size wartość jest mniejsza niż 0.

— lub —

size parametr jest większy niż długość buffer minus wartość parametru offset .

socketFlags nie jest prawidłową kombinacją wartości.

— lub —

Wystąpił błąd systemu operacyjnego podczas uzyskiwania dostępu do elementu Socket.

Element Socket został zamknięty.

Przykłady

Poniższy przykład kodu określa bufor danych, przesunięcie, rozmiar i SocketFlags wysyłanie danych do połączonego Socketelementu .

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

Uwagi

Send synchronicznie wysyła dane do hosta zdalnego określonego Connect w metodzie or Accept i zwraca liczbę bajtów, które zostały pomyślnie wysłane. Send można używać zarówno w przypadku protokołów zorientowanych na połączenia, jak i bez połączenia.

W tym przeciążeniu, jeśli określisz flagę DontRoute jako socketflags parametr, wysyłane dane nie będą kierowane.

Jeśli używasz protokołu bez połączenia, musisz wywołać Connect metodę przed wywołaniem tej metody lub Send zgłosi błąd SocketException. Jeśli używasz protokołu zorientowanego na połączenie, musisz użyć Connect polecenia w celu nawiązania połączenia zdalnego hosta lub użyć polecenia Accept , aby zaakceptować połączenie przychodzące.

Jeśli używasz protokołu bez połączenia i planujesz wysyłanie danych do kilku różnych hostów, użyj polecenia SendTo. Jeśli nie używasz SendTometody , musisz wywołać Connect metodę przed każdym wywołaniem metody .Send Można go użyć SendTo nawet po ustanowieniu domyślnego hosta zdalnego za pomocą polecenia Connect. Można również zmienić domyślnego hosta zdalnego przed wywołaniem przez Send wykonanie innego wywołania metody Connect.

Należy również upewnić się, że rozmiar nie przekracza maksymalnego rozmiaru pakietu bazowego dostawcy usług. Jeśli tak, datagram nie zostanie wysłany i Send zgłosi wartość SocketException.

Jeśli używasz protokołu zorientowanego na połączenie, Send zablokuje wartość do momentu wysłania żądanej liczby bajtów, chyba że limit czasu został ustawiony przy użyciu polecenia Socket.SendTimeout. Jeśli wartość limitu czasu została przekroczona, Send wywołanie zwróci SocketExceptionwartość . W trybie bezblokowania może zakończyć się pomyślnie, Send nawet jeśli wysyła mniej niż liczba żądań bajtów. Aplikacja jest odpowiedzialna za śledzenie liczby wysłanych bajtów i ponawianie próby wykonania operacji do momentu wysłania żądanej liczby bajtów przez aplikację. Nie ma również gwarancji, że wysyłane dane będą natychmiast wyświetlane w sieci. Aby zwiększyć wydajność sieci, podstawowy system może opóźnić transmisję do momentu zebrania znacznej ilości danych wychodzących. Pomyślne ukończenie Send metody oznacza, że podstawowy system miał miejsce na buforować dane dla wysyłania sieciowego.

Uwaga / Notatka

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API windows Sockets w wersji 2 , aby uzyskać szczegółowy opis błędu.

Uwaga / Notatka

Pomyślne ukończenie wysyłania nie oznacza, że dane zostały pomyślnie dostarczone. Jeśli w systemie transportu nie ma dostępnego miejsca buforowego do przechowywania danych do przesyłania, wyślij blok, chyba że gniazdo zostało umieszczone w trybie nieblokowania.

Uwaga / Notatka

Ten członek generuje dane śledzenia po włączeniu śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w programie .NET Framework.

Zobacz też

Dotyczy

Send(Byte[], Int32, SocketFlags)

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Wysyła określoną liczbę bajtów danych do połączonego Socketobiektu przy użyciu określonego SocketFlagselementu .

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

Tablica typu Byte zawierająca dane do wysłania.

size
Int32

Liczba bajtów do wysłania.

socketFlags
SocketFlags

Bitowa kombinacja SocketFlags wartości.

Zwraca

Liczba bajtów wysłanych do obiektu Socket.

Wyjątki

Parametr buffer ma wartość null.

size wartość jest mniejsza niż 0 lub przekracza rozmiar buforu.

socketFlags nie jest prawidłową kombinacją wartości.

— lub —

Podczas uzyskiwania dostępu do gniazda występuje błąd systemu operacyjnego.

Element Socket został zamknięty.

Przykłady

Poniższy przykład kodu wysyła dane znalezione w buforze i określa None wartość .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

Uwagi

Send synchronicznie wysyła dane do hosta zdalnego ustanowionego w metodzie Connect or Accept i zwraca liczbę bajtów, które zostały pomyślnie wysłane. Send można używać zarówno w przypadku protokołów zorientowanych na połączenia, jak i bez połączenia.

To przeciążenie wymaga buforu zawierającego dane, które chcesz wysłać, liczbę bajtów, które chcesz wysłać, oraz bitową kombinację dowolnego SocketFlagselementu . Jeśli określisz flagę DontRoute jako socketflags parametr, wysyłane dane nie będą kierowane.

Jeśli używasz protokołu bez połączenia, musisz wywołać Connect metodę przed wywołaniem tej metody lub Send zgłosi błąd SocketException. Jeśli używasz protokołu zorientowanego na połączenie, musisz użyć Connect polecenia w celu nawiązania połączenia zdalnego hosta lub użyć polecenia Accept , aby zaakceptować połączenie przychodzące.

Jeśli używasz protokołu bez połączenia i planujesz wysyłać dane do kilku różnych hostów, należy użyć SendTo metody . Jeśli nie używasz SendTo metody, musisz wywołać metodę Connect przed każdym wywołaniem Send metody . Możesz użyć SendTo nawet po ustanowieniu domyślnego hosta zdalnego za pomocą polecenia Connect. Można również zmienić domyślnego hosta zdalnego przed wywołaniem Send przez wykonanie innego wywołania metody Connect.

W przypadku protokołu Send zorientowanego na połączenie blok będzie blokowany do momentu wysłania żądanej liczby bajtów, chyba że limit czasu został ustawiony przy użyciu polecenia Socket.SendTimeout. Jeśli wartość limitu czasu została przekroczona, Send wywołanie zwróci SocketExceptionwartość . W trybie bezblokowania może zakończyć się pomyślnie, Send nawet jeśli wysyła mniej niż liczba żądań bajtów. Aplikacja jest odpowiedzialna za śledzenie liczby wysłanych bajtów i ponawianie próby wykonania operacji do momentu wysłania żądanej liczby bajtów przez aplikację. Nie ma również gwarancji, że wysyłane dane będą natychmiast wyświetlane w sieci. Aby zwiększyć wydajność sieci, podstawowy system może opóźnić transmisję do momentu zebrania znacznej ilości danych wychodzących. Pomyślne ukończenie Send metody oznacza, że podstawowy system miał miejsce na buforować dane dla wysyłania sieciowego.

Uwaga / Notatka

Należy upewnić się, że rozmiar nie przekracza maksymalnego rozmiaru pakietu bazowego dostawcy usług. Jeśli tak, datagram nie zostanie wysłany i Send zgłosi wartość SocketException. Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API windows Sockets w wersji 2 , aby uzyskać szczegółowy opis błędu.

Ten członek generuje dane śledzenia po włączeniu śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w programie .NET Framework.

Ważna

Pomyślne ukończenie wysyłania nie oznacza, że dane zostały pomyślnie dostarczone. Jeśli w systemie transportu nie ma dostępnego miejsca buforowego do przechowywania danych do przesyłania, wyślij blok, chyba że gniazdo zostało umieszczone w trybie nieblokowania.

Zobacz też

Dotyczy

Send(IList<ArraySegment<Byte>>)

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Wysyła zestaw buforów na liście do połączonego Socketelementu .

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

Lista typówArraySegment<T>Byte, która zawiera dane do wysłania.

Zwraca

Liczba bajtów wysłanych do obiektu Socket.

Wyjątki

Parametr buffers ma wartość null.

buffers jest pusta.

Wystąpił błąd podczas próby uzyskania dostępu do gniazda. Zobacz sekcję uwagi poniżej.

Element Socket został zamknięty.

Uwagi

Send można używać zarówno w przypadku protokołów zorientowanych na połączenia, jak i bez połączenia.

To przeciążenie wymaga co najmniej jednego buforu zawierającego dane, które chcesz wysłać.

Jeśli używasz protokołu bez połączenia, musisz wywołać Connect metodę przed wywołaniem tej metody lub Send zgłosi błąd SocketException. Jeśli używasz protokołu zorientowanego na połączenie, musisz użyć Connect polecenia w celu nawiązania połączenia zdalnego hosta lub użyć polecenia Accept , aby zaakceptować połączenie przychodzące.

Jeśli używasz protokołu bez połączenia i planujesz wysyłać dane na kilka różnych hostów, należy użyć SendTo metody . Jeśli nie używasz SendTo metody , musisz wywołać Connect metodę przed każdym wywołaniem metody Send. Możesz użyć SendTo nawet po ustanowieniu domyślnego hosta zdalnego za pomocą polecenia Connect. Można również zmienić domyślnego hosta zdalnego przed wywołaniem przez Send wykonanie innego wywołania metody Connect.

Jeśli używasz protokołu zorientowanego na połączenie, Send będzie blokować do momentu wysłania wszystkich bajtów w buforze, chyba że limit czasu został ustawiony przy użyciu polecenia Socket.SendTimeout. Jeśli wartość limitu czasu została przekroczona, Send wywołanie zwróci SocketExceptionwartość . W trybie bezblokowania może zakończyć się pomyślnie, Send nawet jeśli wysyła mniej niż liczba bajtów w buforze. Aplikacja jest odpowiedzialna za śledzenie liczby wysłanych bajtów i ponawianie próby wykonania operacji do momentu wysłania bajtów w buforze przez aplikację. Nie ma również gwarancji, że wysyłane dane będą natychmiast wyświetlane w sieci. Aby zwiększyć wydajność sieci, podstawowy system może opóźnić transmisję do momentu zebrania znacznej ilości danych wychodzących. Pomyślne ukończenie Send metody oznacza, że podstawowy system miał miejsce na buforować dane dla wysyłania sieciowego.

Uwaga / Notatka

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API windows Sockets w wersji 2 , aby uzyskać szczegółowy opis błędu.

Uwaga / Notatka

Pomyślne ukończenie wysyłania nie oznacza, że dane zostały pomyślnie dostarczone. Jeśli w systemie transportu nie ma dostępnego miejsca buforowego do przechowywania danych do przesyłania, wyślij blok, chyba że gniazdo zostało umieszczone w trybie nieblokowania.

Uwaga / Notatka

Ten członek generuje dane śledzenia po włączeniu śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w programie .NET Framework.

Dotyczy

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

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Wysyła zestaw buforów na liście do połączonego Socketobiektu przy użyciu określonego SocketFlagselementu .

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

Lista typówArraySegment<T>Byte, która zawiera dane do wysłania.

socketFlags
SocketFlags

Bitowa kombinacja SocketFlags wartości.

Zwraca

Liczba bajtów wysłanych do obiektu Socket.

Wyjątki

Parametr buffers ma wartość null.

buffers jest pusta.

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Element Socket został zamknięty.

Uwagi

To przeciążenie wymaga co najmniej jednego buforu zawierającego dane, które chcesz wysłać. Wartość domyślna SocketFlags to 0. Jeśli określisz flagę DontRoute jako socketFlags parametr, wysyłane dane nie będą kierowane.

Jeśli używasz protokołu bez połączenia, musisz wywołać Connect metodę przed wywołaniem tej metody lub Send zgłosi błąd SocketException. Jeśli używasz protokołu zorientowanego na połączenie, musisz użyć Connect polecenia w celu nawiązania połączenia zdalnego hosta lub użyć polecenia Accept , aby zaakceptować połączenie przychodzące.

Jeśli używasz protokołu bez połączenia i planujesz wysyłać dane na kilka różnych hostów, należy użyć SendTo metody . Jeśli nie używasz SendTo metody , musisz wywołać Connect metodę przed każdym wywołaniem metody Send. Możesz użyć SendTo nawet po ustanowieniu domyślnego hosta zdalnego za pomocą polecenia Connect. Można również zmienić domyślnego hosta zdalnego przed wywołaniem przez Send wykonanie innego wywołania metody Connect.

Jeśli używasz protokołu zorientowanego na połączenie, Send będzie blokować do momentu wysłania wszystkich bajtów w buforze, chyba że limit czasu został ustawiony przy użyciu polecenia Socket.SendTimeout. Jeśli wartość limitu czasu została przekroczona, Send wywołanie zwróci SocketExceptionwartość . W trybie nieblokacyjnym może zakończyć się pomyślnie, Send nawet jeśli liczba bajtów w buforze będzie mniejsza niż liczba bajtów. Aplikacja jest odpowiedzialna za śledzenie liczby wysłanych bajtów i ponawianie próby wykonania operacji do momentu wysłania bajtów w buforze przez aplikację. Nie ma również gwarancji, że wysyłane dane będą natychmiast wyświetlane w sieci. Aby zwiększyć wydajność sieci, podstawowy system może opóźnić transmisję do momentu zebrania znacznej ilości danych wychodzących. Pomyślne ukończenie Send metody oznacza, że podstawowy system miał miejsce na buforować dane dla wysyłania sieciowego.

Uwaga / Notatka

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API windows Sockets w wersji 2 , aby uzyskać szczegółowy opis błędu.

Uwaga / Notatka

Pomyślne ukończenie wysyłania nie oznacza, że dane zostały pomyślnie dostarczone. Jeśli w systemie transportu nie ma dostępnego miejsca buforowego do przechowywania danych do przesyłania, wyślij blok, chyba że gniazdo zostało umieszczone w trybie nieblokowania.

Uwaga / Notatka

Ten członek generuje dane śledzenia po włączeniu śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w programie .NET Framework.

Dotyczy

Send(Byte[], SocketFlags)

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Wysyła dane do połączonego Socket przy użyciu określonego SocketFlagselementu .

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

Tablica typu Byte zawierająca dane do wysłania.

socketFlags
SocketFlags

Bitowa kombinacja SocketFlags wartości.

Zwraca

Liczba bajtów wysłanych do obiektu Socket.

Wyjątki

Parametr buffer ma wartość null.

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Element Socket został zamknięty.

Przykłady

W poniższym przykładzie kodu pokazano wysyłanie danych na połączonym Socketobiekcie .

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

Uwagi

Send synchronicznie wysyła dane do hosta zdalnego ustanowionego w metodzie Connect or Accept i zwraca liczbę bajtów, które zostały pomyślnie wysłane. Metody Send można używać zarówno dla protokołów zorientowanych na połączenie, jak i bez połączenia.

To przeciążenie wymaga buforu zawierającego dane, które chcesz wysłać, i bitową kombinację .SocketFlags Przesunięcie buforu domyślnie wynosi 0, a liczba bajtów do wysłania wartości domyślnych do rozmiaru buforu. Jeśli określisz flagę jako wartość parametru DontRoutesocketflags , wysyłane dane nie będą kierowane.

Jeśli używasz protokołu bez połączenia, musisz wywołać Connect metodę przed wywołaniem tej metody lub Send zgłosi błąd SocketException. Jeśli używasz protokołu zorientowanego na połączenie, musisz użyć Connect polecenia w celu nawiązania połączenia zdalnego hosta lub użyć polecenia Accept , aby zaakceptować połączenie przychodzące.

Jeśli używasz protokołu bez połączenia i planujesz wysyłać dane na kilka różnych hostów, należy użyć SendTo metody . Jeśli nie używasz SendTo metody , musisz wywołać metodę Connect przed każdym wywołaniem metody .Send Możesz użyć SendTo nawet po ustanowieniu domyślnego hosta zdalnego za pomocą polecenia Connect. Można również zmienić domyślnego hosta zdalnego przed wywołaniem przez Send wykonanie innego wywołania metody Connect.

Jeśli używasz protokołu zorientowanego na połączenie, Send będzie blokować do momentu wysłania wszystkich bajtów w buforze, chyba że limit czasu został ustawiony przy użyciu polecenia Socket.SendTimeout. Jeśli wartość limitu czasu została przekroczona, Send wywołanie zwróci SocketExceptionwartość . W trybie bezblokowania może zakończyć się pomyślnie, Send nawet jeśli wysyła mniej niż liczba bajtów w buforze. Aplikacja jest odpowiedzialna za śledzenie liczby wysłanych bajtów i ponawianie próby wykonania operacji do momentu wysłania żądanej liczby bajtów przez aplikację. Nie ma również gwarancji, że wysyłane dane będą natychmiast wyświetlane w sieci. Aby zwiększyć wydajność sieci, podstawowy system może opóźnić transmisję do momentu zebrania znacznej ilości danych wychodzących. Pomyślne ukończenie Send metody oznacza, że podstawowy system miał miejsce na buforować dane dla wysyłania sieciowego.

Uwaga / Notatka

Należy się upewnić, że rozmiar buforu nie przekracza maksymalnego rozmiaru pakietu bazowego dostawcy usług. Jeśli tak, datagram nie zostanie wysłany i Send zgłosi wartość SocketException. Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API windows Sockets w wersji 2 , aby uzyskać szczegółowy opis błędu.

Uwaga / Notatka

Pomyślne ukończenie wysyłania nie oznacza, że dane zostały pomyślnie dostarczone. Jeśli w systemie transportu nie ma dostępnego miejsca buforowego do przechowywania danych do przesyłania, wyślij blok, chyba że gniazdo zostało umieszczone w trybie nieblokowania.

Uwaga / Notatka

Ten członek generuje dane śledzenia po włączeniu śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w programie .NET Framework.

Zobacz też

Dotyczy

Send(ReadOnlySpan<Byte>, SocketFlags)

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Wysyła dane do połączonego Socket przy użyciu określonego SocketFlagselementu .

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>

Zakres bajtów, który zawiera dane do wysłania.

socketFlags
SocketFlags

Bitowa kombinacja wartości wyliczenia, która określa zachowania wysyłania i odbierania.

Zwraca

Liczba bajtów wysłanych do obiektu Socket.

Wyjątki

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Element Socket został zamknięty.

Zobacz też

Dotyczy

Send(Byte[])

Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs
Źródło:
Socket.cs

Wysyła dane do połączonego Socketobiektu .

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

Tablica typu Byte zawierająca dane do wysłania.

Zwraca

Liczba bajtów wysłanych do obiektu Socket.

Wyjątki

Parametr buffer ma wartość null.

Wystąpił błąd podczas próby uzyskania dostępu do gniazda.

Element Socket został zamknięty.

Przykłady

W poniższym przykładzie kodu pokazano wysyłanie danych na połączonym Socketobiekcie .

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

Uwagi

Send synchronicznie wysyła dane do hosta zdalnego określonego Connect w metodzie or Accept i zwraca liczbę bajtów, które zostały pomyślnie wysłane. Send można używać zarówno w przypadku protokołów zorientowanych na połączenia, jak i bez połączenia.

To przeciążenie wymaga buforu zawierającego dane, które chcesz wysłać. Wartość domyślna SocketFlags to 0, domyślnie przesunięcie buforu wynosi 0, a liczba bajtów do wysłania wartości domyślnych do rozmiaru buforu.

Jeśli używasz protokołu bez połączenia, musisz wywołać Connect metodę przed wywołaniem tej metody lub Send zgłosi błąd SocketException. Jeśli używasz protokołu zorientowanego na połączenie, musisz użyć Connect polecenia w celu nawiązania połączenia zdalnego hosta lub użyć polecenia Accept , aby zaakceptować połączenie przychodzące.

Jeśli używasz protokołu bez połączenia i planujesz wysyłać dane na kilka różnych hostów, należy użyć SendTo metody . Jeśli nie używasz SendTo metody , musisz wywołać Connect metodę przed każdym wywołaniem metody Send. Możesz użyć SendTo nawet po ustanowieniu domyślnego hosta zdalnego za pomocą polecenia Connect. Można również zmienić domyślnego hosta zdalnego przed wywołaniem przez Send wykonanie innego wywołania metody Connect.

Jeśli używasz protokołu zorientowanego na połączenie, Send będzie blokować do momentu wysłania wszystkich bajtów w buforze, chyba że limit czasu został ustawiony przy użyciu polecenia Socket.SendTimeout. Jeśli wartość limitu czasu została przekroczona, Send wywołanie zwróci SocketExceptionwartość . W trybie bezblokowania może zakończyć się pomyślnie, Send nawet jeśli wysyła mniej niż liczba bajtów w buforze. Aplikacja jest odpowiedzialna za śledzenie liczby wysłanych bajtów i ponawianie próby wykonania operacji do momentu wysłania bajtów w buforze przez aplikację. Nie ma również gwarancji, że wysyłane dane będą natychmiast wyświetlane w sieci. Aby zwiększyć wydajność sieci, podstawowy system może opóźnić transmisję do momentu zebrania znacznej ilości danych wychodzących. Pomyślne ukończenie Send metody oznacza, że podstawowy system miał miejsce na buforować dane dla wysyłania sieciowego.

Uwaga / Notatka

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu. Po uzyskaniu tego kodu zapoznaj się z dokumentacją kodu błędu interfejsu API windows Sockets w wersji 2 , aby uzyskać szczegółowy opis błędu.

Uwaga / Notatka

Pomyślne ukończenie wysyłania nie oznacza, że dane zostały pomyślnie dostarczone. Jeśli w systemie transportu nie ma dostępnego miejsca buforowego do przechowywania danych do przesyłania, wyślij blok, chyba że gniazdo zostało umieszczone w trybie nieblokowania.

Uwaga / Notatka

Ten członek generuje dane śledzenia po włączeniu śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w programie .NET Framework.

Zobacz też

Dotyczy