Aracılığıyla paylaş


Socket.BeginSendTo Yöntem

Tanım

Verileri belirli bir uzak konağa zaman uyumsuz olarak gönderir.

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

Parametreler

buffer
Byte[]

Gönderilecek verileri içeren tür Byte dizisi.

offset
Int32

Veri göndermeye başlayabileceğiniz sıfır tabanlı konum buffer .

size
Int32

Gönderilecek bayt sayısı.

socketFlags
SocketFlags

Değerlerin bit düzeyinde birleşimi SocketFlags .

remoteEP
EndPoint

EndPoint Uzak cihazı temsil eden bir.

callback
AsyncCallback

Temsilci AsyncCallback .

state
Object

Bu istek için durum bilgilerini içeren bir nesne.

Döndürülenler

IAsyncResult Zaman uyumsuz göndermeye başvuran bir.

Özel durumlar

buffer, null değeridir.

-veya-

remoteEP, null değeridir.

Yalnızca .NET Framework ve .NET 5 ve öncesi: Yuvaya erişmeye çalışılırken bir hata oluştu.

offset 0'dan küçüktür.

-veya-

offset , uzunluğundan bufferbüyüktür.

-veya-

size 0'dan küçüktür.

-veya-

size , parametresinin buffer değeri eksi değerinden offset büyük.

Çağrı yığınında daha yüksek bir çağıranın istenen işlem için izni yok.

Açıklamalar

Önemli

Bu bir uyumluluk API'sidir. Yeni geliştirme için APM (Begin* ve End*) yöntemlerinin kullanılmasını önermiyoruz. Bunun yerine, tabanlı eşdeğerleri kullanın Task.

İşlemin tamamlandığının bildirilmesi için öğesini uygulayan AsyncCallbackBeginSendTo bir geri çağırma geçirebilirsiniz. Temel alınan ağ yığını işlemi zaman uyumlu bir şekilde tamamlarsa, çağrısı sırasında geri çağırmanın BeginSendTosatır içinde yürütüleceğini unutmayın. Bu durumda, CompletedSynchronously döndürülen IAsyncResult üzerindeki özelliği yöntemin zaman uyumlu olarak tamamlandığını belirtmek için olarak ayarlanır true . yöntemine AsyncState geçirilen durum nesnesini almak için BeginSendTo özelliğini IAsyncResult kullanın.

İşlemin BeginSendTo yöntemi çağrılarak EndSendTo tamamlanması gerekir. Yöntem genellikle sağlanan AsyncCallback temsilci tarafından çağrılır. EndSendTo işlem tamamlanana kadar çağıran iş parçacığını engeller.

Bağlantı odaklı bir protokol kullanıyorsanız, önce , BeginConnect, Acceptveya BeginAccept yöntemini çağırmanız Connectgerekir veya BeginSendTo bir SocketExceptionoluşturur. BeginSendToparametresini remoteEP yoksayar ve , , BeginConnectAcceptveya BeginAccept yönteminde Connectoluşturulan öğesine veri EndPoint gönderir.

Bağlantısız bir protokol kullanıyorsanız, çağrısından SendToönce veya BeginConnect yöntemiyle Connect varsayılan bir uzak konak oluşturmanız gerekmez. Yalnızca yöntemini çağırmak BeginSend istiyorsanız bunu yapmanız gerekir. çağırmadan SendToremoteEP önce veya BeginConnect yöntemini çağırırsanızConnect, parametresi yalnızca bu gönderme işlemi için belirtilen varsayılan uzak konağı geçersiz kılar. Yöntemini çağırmanız Bind da gerekmez. Bu durumda, temel alınan hizmet sağlayıcısı en uygun yerel ağ adresini ve bağlantı noktası numarasını atar. Temel alınan hizmet sağlayıcısının ücretsiz bir bağlantı noktası seçmesini istiyorsanız sıfır bağlantı noktası numarası kullanın. Atanan yerel ağ adresini ve bağlantı noktası numarasını tanımlamanız gerekiyorsa, yöntemi başarıyla tamamlandıktan sonra EndSendTo özelliğini kullanabilirsinizLocalEndPoint.

Yayın adresine veri göndermek istiyorsanız, önce yöntemini çağırmanız SetSocketOption ve yuva seçeneğini olarak SocketOptionName.Broadcastayarlamanız gerekir. -Arabelleğinizin boyutunun temel alınan hizmet sağlayıcısının en büyük paket boyutunu aşmadığından da emin olmalısınız. Bunu yaparsa, veri birimi gönderilmez ve EndSendTo bir SocketExceptionoluşturur.

Parametre olarak socketflags bayrağını DontRoute belirtirseniz, gönderdiğiniz veriler yönlendirilmeyecek.

Not

bir alırsanız, belirli bir SocketExceptionhata kodunu almak için özelliğini kullanın SocketException.ErrorCode . Bu kodu aldıktan sonra, hatanın ayrıntılı açıklaması için Windows Yuvaları sürüm 2 API hata kodu belgelerine bakın.

Not

Uygulamanızda ağ izlemeyi etkinleştirdiğinizde, bu üye izleme bilgilerini çıkarır. Daha fazla bilgi için bkz. .NET Framework'da Ağ İzleme.

Not

Yürütme bağlamı (güvenlik bağlamı, kimliğine bürünülen kullanıcı ve çağıran bağlam) zaman uyumsuz Socket yöntemler için önbelleğe alınır. Belirli bir bağlamın (belirli bir zaman uyumsuz Socket yöntem, belirli bir örnek ve belirli Socket bir geri çağırma) ilk kullanımından sonra, bu bağlamın sonraki kullanımları performans artışıyla karşılaşır.

Şunlara uygulanır

Ayrıca bkz.