Socket.BeginSend Metoda

Definicja

Wysyła dane asynchronicznie do połączonego Socketelementu .

Przeciążenia

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

Wysyła dane asynchronicznie do połączonego Socketelementu .

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

Wysyła dane asynchronicznie do połączonego Socketelementu .

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

Wysyła dane asynchronicznie do połączonego Socketelementu .

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

Wysyła dane asynchronicznie do połączonego Socketelementu .

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, AsyncCallback, Object)

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

Wysyła dane asynchronicznie do połączonego Socketelementu .

public:
 IAsyncResult ^ BeginSend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult

Parametry

buffers
IList<ArraySegment<Byte>>

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

socketFlags
SocketFlags

Bitowa kombinacja SocketFlags wartości.

callback
AsyncCallback

Delegat AsyncCallback .

state
Object

Obiekt zawierający informacje o stanie dla tego żądania.

Zwraca

Element IAsyncResult odwołujący się do wysyłania asynchronicznego.

Wyjątki

buffers to null.

buffers jest pusta.

.NET Framework i .NET 5 i starszych tylko: wystąpił błąd podczas próby uzyskania dostępu do gniazda. Zobacz sekcję uwagi poniżej.

Element Socket został zamknięty.

Uwagi

Ważne

Jest to interfejs API zgodności. Nie zalecamy używania metod APM (Begin* i End*) do tworzenia nowych rozwiązań. Zamiast tego należy użyć odpowiedników opartych na Taskparametrach .

Możesz przekazać wywołanie zwrotne implementujące AsyncCallback element , aby BeginSend otrzymywać powiadomienia o zakończeniu operacji. Należy pamiętać, że jeśli bazowy stos sieciowy ukończy operację synchronicznie, wywołanie zwrotne zostanie wykonane w tekście podczas wywołania metody BeginSend. W takim przypadku właściwość zwrócona IAsyncResult zostanie ustawiona na wartość , aby wskazaćtrue, CompletedSynchronously że metoda została ukończona synchronicznie. AsyncState Użyj właściwości , IAsyncResult aby uzyskać obiekt stanu przekazany do BeginSend metody .

Operacja asynchroniczna musi zostać ukończona BeginSend przez wywołanie EndSend metody . Zazwyczaj metoda jest wywoływana przez delegata AsyncCallback . EndSend Zablokuje wątek wywołujący do momentu ukończenia operacji.

Chociaż jest przeznaczony dla protokołów zorientowanych na połączenie, BeginSend działa również w przypadku protokołów bez połączenia, pod warunkiem, że najpierw wywołasz Connect metodę lub BeginConnect w celu ustanowienia domyślnego hosta zdalnego. Jeśli używasz protokołu bez połączenia i planujesz wysyłanie danych do kilku różnych hostów, użyj polecenia BeginSendTo. Można go użyć BeginSendTo nawet po ustanowieniu domyślnego hosta zdalnego za pomocą polecenia Connect. Możesz również zmienić domyślnego hosta zdalnego przed wywołaniem BeginSend przez wykonanie innego wywołania do Connect lub BeginConnect. W przypadku protokołów bez połączenia należy również mieć pewność, że rozmiar buforu nie przekracza maksymalnego rozmiaru pakietu bazowego dostawcy usług. Jeśli tak się stanie, datagram nie zostanie wysłany i BeginSend zgłosi błąd SocketException.

Jeśli określisz flagę DontRoute jako socketflags parametr, wysyłane dane nie będą kierowane.

Uwaga

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu.

Uwaga

Wszystkie operacje we/wy inicjowane przez dany wątek są anulowane po zakończeniu tego wątku. Oczekująca operacja asynchroniczna może zakończyć się niepowodzeniem, jeśli wątek zakończy się przed zakończeniem operacji.

Uwaga

state jest wystąpieniem klasy zdefiniowanej przez użytkownika.

Uwaga

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

Uwaga

Ten element członkowski generuje informacje ze śledzenia pod warunkiem włączenia funkcji śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w .NET Framework.

Uwaga

Kontekst wykonywania (kontekst zabezpieczeń, personifikowany użytkownik i kontekst wywołujący) jest buforowany dla metod asynchronicznych Socket . Po pierwszym użyciu określonego kontekstu (konkretnej metody asynchronicznej Socket , określonego wystąpienia i określonego Socket wywołania zwrotnego), kolejne zastosowania tego kontekstu zobaczą poprawę wydajności.

Zobacz też

Dotyczy

BeginSend(IList<ArraySegment<Byte>>, SocketFlags, SocketError, AsyncCallback, Object)

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

Wysyła dane asynchronicznie do połączonego Socketelementu .

public:
 IAsyncResult ^ BeginSend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ buffers, System::Net::Sockets::SocketFlags socketFlags, [Runtime::InteropServices::Out] System::Net::Sockets::SocketError % errorCode, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult? BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (System.Collections.Generic.IList<ArraySegment<byte>> buffers, System.Net.Sockets.SocketFlags socketFlags, out System.Net.Sockets.SocketError errorCode, AsyncCallback callback, object state);
member this.BeginSend : System.Collections.Generic.IList<ArraySegment<byte>> * System.Net.Sockets.SocketFlags * SocketError * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffers As IList(Of ArraySegment(Of Byte)), socketFlags As SocketFlags, ByRef errorCode As SocketError, callback As AsyncCallback, state As Object) As IAsyncResult

Parametry

buffers
IList<ArraySegment<Byte>>

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

socketFlags
SocketFlags

Bitowa kombinacja SocketFlags wartości.

errorCode
SocketError

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

callback
AsyncCallback

Delegat AsyncCallback .

state
Object

Obiekt zawierający informacje o stanie dla tego żądania.

Zwraca

Element IAsyncResult , który odwołuje się do wysyłania asynchronicznego.

Wyjątki

buffers to null.

buffers jest pusta.

.NET Framework i .NET 5 i starszych tylko: wystąpił błąd podczas próby uzyskania dostępu do gniazda. Zobacz sekcję uwagi poniżej.

Element Socket został zamknięty.

Uwagi

Ważne

Jest to interfejs API zgodności. Nie zalecamy używania metod APM (Begin* i End*) do tworzenia nowych rozwiązań. Zamiast tego należy użyć odpowiedników opartych na Taskparametrach .

Możesz przekazać wywołanie zwrotne implementujące AsyncCallback element , aby BeginSend otrzymywać powiadomienia o zakończeniu operacji. Należy pamiętać, że jeśli bazowy stos sieciowy ukończy operację synchronicznie, wywołanie zwrotne zostanie wykonane w tekście podczas wywołania metody BeginSend. W takim przypadku właściwość zwrócona IAsyncResult zostanie ustawiona na wartość , aby wskazaćtrue, CompletedSynchronously że metoda została ukończona synchronicznie. AsyncState Użyj właściwości , IAsyncResult aby uzyskać obiekt stanu przekazany do BeginSend metody .

Operacja asynchroniczna musi zostać ukończona BeginSend przez wywołanie EndSend metody . Zazwyczaj metoda jest wywoływana przez delegata AsyncCallback . EndSend Zablokuje wątek wywołujący do momentu ukończenia operacji.

Chociaż jest przeznaczony dla protokołów zorientowanych na połączenie, BeginSend działa również w przypadku protokołów bez połączenia, pod warunkiem, że najpierw wywołasz Connect metodę lub BeginConnect w celu ustanowienia domyślnego hosta zdalnego. Jeśli używasz protokołu bez połączenia i planujesz wysyłanie danych do kilku różnych hostów, użyj polecenia BeginSendTo. Można go użyć BeginSendTo nawet po ustanowieniu domyślnego hosta zdalnego za pomocą polecenia Connect. Możesz również zmienić domyślnego hosta zdalnego przed wywołaniem BeginSend przez wykonanie innego wywołania do Connect lub BeginConnect. W przypadku protokołów bez połączenia należy również mieć pewność, że rozmiar buforu nie przekracza maksymalnego rozmiaru pakietu bazowego dostawcy usług. Jeśli tak się stanie, datagram nie zostanie wysłany i BeginSend zgłosi błąd SocketException.

Jeśli określisz flagę DontRoute jako socketflags parametr, wysyłane dane nie będą kierowane.

Uwaga

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu.

Uwaga

Wszystkie operacje we/wy inicjowane przez dany wątek są anulowane po zakończeniu tego wątku. Oczekująca operacja asynchroniczna może zakończyć się niepowodzeniem, jeśli wątek zakończy się przed zakończeniem operacji.

Uwaga

state jest wystąpieniem klasy zdefiniowanej przez użytkownika.

Uwaga

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

Uwaga

Ten element członkowski generuje informacje ze śledzenia pod warunkiem włączenia funkcji śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w .NET Framework.

Uwaga

Kontekst wykonywania (kontekst zabezpieczeń, personifikowany użytkownik i kontekst wywołujący) jest buforowany dla metod asynchronicznych Socket . Po pierwszym użyciu określonego kontekstu (konkretnej metody asynchronicznej Socket , określonego Socket wystąpienia i określonego wywołania zwrotnego), kolejne zastosowania tego kontekstu zobaczą poprawę wydajności.

Zobacz też

Dotyczy

BeginSend(Byte[], Int32, Int32, SocketFlags, AsyncCallback, Object)

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

Wysyła dane asynchronicznie do połączonego Socketelementu .

public:
 IAsyncResult ^ BeginSend(cli::array <System::Byte> ^ buffer, int offset, int size, System::Net::Sockets::SocketFlags socketFlags, AsyncCallback ^ callback, System::Object ^ state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback? callback, object? state);
public IAsyncResult BeginSend (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, AsyncCallback callback, object state);
member this.BeginSend : byte[] * int * int * System.Net.Sockets.SocketFlags * AsyncCallback * obj -> IAsyncResult
Public Function BeginSend (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, callback As AsyncCallback, state As Object) As IAsyncResult

Parametry

buffer
Byte[]

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

offset
Int32

Pozycja oparta na zerach w parametrze buffer , na którym ma rozpocząć wysyłanie danych.

size
Int32

Liczba bajtów do wysłania.

socketFlags
SocketFlags

Bitowa kombinacja SocketFlags wartości.

callback
AsyncCallback

Delegat AsyncCallback .

state
Object

Obiekt zawierający informacje o stanie dla tego żądania.

Zwraca

Element IAsyncResult , który odwołuje się do wysyłania asynchronicznego.

Wyjątki

buffer to null.

.NET Framework i .NET 5 i starsze tylko: wystąpił błąd podczas próby uzyskania dostępu do gniazda. Zobacz sekcję uwagi poniżej.

offset wartość jest mniejsza niż 0.

-lub-

offset jest mniejsza niż długość obiektu buffer.

-lub-

size wartość jest mniejsza niż 0.

-lub-

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

Została zamknięta Socket .

Uwagi

Ważne

Jest to interfejs API zgodności. Nie zalecamy używania metod APM (Begin* i End*) do nowego programowania. Zamiast tego należy użyć Taskodpowiedników opartych na protokole .

Możesz przekazać wywołanie zwrotne implementujące AsyncCallback polecenie , BeginSend aby otrzymywać powiadomienia o zakończeniu operacji. Należy pamiętać, że jeśli bazowy stos sieciowy ukończy operację synchronicznie, wywołanie zwrotne zostanie wykonane w tekście podczas wywołania metody BeginSend. W takim przypadku CompletedSynchronously właściwość zwrócona IAsyncResult zostanie ustawiona na wartość , aby wskazać true , że metoda została ukończona synchronicznie. AsyncState Użyj właściwości obiektu , IAsyncResult aby uzyskać obiekt stanu przekazany do BeginSend metody.

Operacja asynchroniczna BeginSend musi zostać ukończona przez wywołanie EndSend metody . Zazwyczaj metoda jest wywoływana przez delegata AsyncCallback . EndSend zablokuje wątek wywołujący do momentu ukończenia operacji.

Chociaż jest przeznaczony do protokołów zorientowanych na połączenia, BeginSend działa również w przypadku protokołów bez połączenia, pod warunkiem, że najpierw wywołasz metodę Connect lub BeginConnect w celu ustanowienia domyślnego hosta zdalnego. Jeśli używasz protokołu bez połączenia i planujesz wysyłanie danych do kilku różnych hostów, należy użyć polecenia BeginSendTo. Jest w porządku, aby użyć BeginSendTo nawet po ustanowieniu domyślnego hosta zdalnego z .Connect Możesz również zmienić domyślny host zdalny przed wywołaniem przez wykonanie innego wywołania BeginSend do Connect lub BeginConnect. W przypadku protokołów bez połączenia należy również upewnić się, że rozmiar buforu nie przekracza maksymalnego rozmiaru pakietu bazowego dostawcy usług. Jeśli tak się stanie, datagram nie zostanie wysłany i BeginSend zgłosi błąd SocketException.

Jeśli określisz flagę DontRoutesocketflags jako parametr, wysyłane dane nie będą kierowane.

Uwaga

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu.

Uwaga

Wszystkie operacje we/wy inicjowane przez dany wątek są anulowane po zakończeniu tego wątku. Oczekująca operacja asynchroniczna może zakończyć się niepowodzeniem, jeśli wątek zakończy się przed zakończeniem operacji.

Uwaga

state jest wystąpieniem klasy zdefiniowanej przez użytkownika.

Uwaga

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

Uwaga

Ten element członkowski generuje informacje ze śledzenia pod warunkiem włączenia funkcji śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w .NET Framework.

Uwaga

Kontekst wykonywania (kontekst zabezpieczeń, personifikowany użytkownik i kontekst wywołujący) jest buforowany dla metod asynchronicznych Socket . Po pierwszym użyciu określonego kontekstu (konkretnej metody asynchronicznej Socket , określonego Socket wystąpienia i określonego wywołania zwrotnego), kolejne zastosowania tego kontekstu zobaczą poprawę wydajności.

Zobacz też

Dotyczy

BeginSend(Byte[], Int32, Int32, SocketFlags, SocketError, AsyncCallback, Object)

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

Wysyła dane asynchronicznie do połączonego Socketelementu .

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

Parametry

buffer
Byte[]

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

offset
Int32

Pozycja oparta na zerach w parametrze buffer , na którym ma 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.

callback
AsyncCallback

Delegat AsyncCallback .

state
Object

Obiekt zawierający informacje o stanie dla tego żądania.

Zwraca

Element IAsyncResult , który odwołuje się do wysyłania asynchronicznego.

Wyjątki

buffer to null.

.NET Framework i .NET 5 i starsze tylko: wystąpił błąd podczas próby uzyskania dostępu do gniazda. Zobacz sekcję uwagi poniżej.

offset wartość jest mniejsza niż 0.

-lub-

offset jest mniejsza niż długość obiektu buffer.

-lub-

size wartość jest mniejsza niż 0.

-lub-

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

Została zamknięta Socket .

Uwagi

Ważne

Jest to interfejs API zgodności. Nie zalecamy używania metod APM (Begin* i End*) do nowego programowania. Zamiast tego należy użyć Taskodpowiedników opartych na protokole .

Możesz przekazać wywołanie zwrotne implementujące AsyncCallback polecenie , BeginSend aby otrzymywać powiadomienia o zakończeniu operacji. Należy pamiętać, że jeśli bazowy stos sieciowy ukończy operację synchronicznie, wywołanie zwrotne zostanie wykonane w tekście podczas wywołania metody BeginSend. W takim przypadku CompletedSynchronously właściwość zwrócona IAsyncResult zostanie ustawiona na wartość , aby wskazać true , że metoda została ukończona synchronicznie. AsyncState Użyj właściwości obiektu , IAsyncResult aby uzyskać obiekt stanu przekazany do BeginSend metody.

Operacja asynchroniczna BeginSend musi zostać ukończona przez wywołanie EndSend metody . Zazwyczaj metoda jest wywoływana przez delegata AsyncCallback . EndSend zablokuje wątek wywołujący do momentu ukończenia operacji.

Chociaż jest przeznaczony do protokołów zorientowanych na połączenia, BeginSend działa również w przypadku protokołów bez połączenia, pod warunkiem, że najpierw wywołasz metodę Connect lub BeginConnect w celu ustanowienia domyślnego hosta zdalnego. Jeśli używasz protokołu bez połączenia i planujesz wysyłanie danych do kilku różnych hostów, należy użyć polecenia BeginSendTo. Jest w porządku, aby użyć BeginSendTo nawet po ustanowieniu domyślnego hosta zdalnego z .Connect Możesz również zmienić domyślny host zdalny przed wywołaniem przez wykonanie innego wywołania BeginSend do Connect lub BeginConnect. W przypadku protokołów bez połączenia należy również upewnić się, że rozmiar buforu nie przekracza maksymalnego rozmiaru pakietu bazowego dostawcy usług. Jeśli tak się stanie, datagram nie zostanie wysłany i BeginSend zgłosi błąd SocketException.

Jeśli określisz flagę DontRoutesocketflags jako parametr, wysyłane dane nie będą kierowane.

Uwaga

Jeśli zostanie wyświetlony element SocketException, użyj SocketException.ErrorCode właściwości , aby uzyskać określony kod błędu.

Uwaga

Wszystkie operacje we/wy inicjowane przez dany wątek są anulowane po zakończeniu tego wątku. Oczekująca operacja asynchroniczna może zakończyć się niepowodzeniem, jeśli wątek zakończy się przed zakończeniem operacji.

Uwaga

state jest wystąpieniem klasy zdefiniowanej przez użytkownika.

Uwaga

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

Uwaga

Ten element członkowski generuje informacje ze śledzenia pod warunkiem włączenia funkcji śledzenia sieci w aplikacji. Aby uzyskać więcej informacji, zobacz Śledzenie sieci w .NET Framework.

Uwaga

Kontekst wykonywania (kontekst zabezpieczeń, personifikowany użytkownik i kontekst wywołujący) jest buforowany dla metod asynchronicznych Socket . Po pierwszym użyciu określonego kontekstu (konkretnej metody asynchronicznej Socket , określonego Socket wystąpienia i określonego wywołania zwrotnego), kolejne zastosowania tego kontekstu zobaczą poprawę wydajności.

Zobacz też

Dotyczy