Socket.Send Metoda
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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ż
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
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ż
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
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
- 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ż
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
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
- 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ż
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
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
- 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ż
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
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
- 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ż
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
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ż
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)
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
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ż
- Connect(EndPoint)
- SendTo(Byte[], Int32, Int32, SocketFlags, EndPoint)
- SocketFlags
- SetSocketOption(SocketOptionLevel, SocketOptionName, Int32)