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şlanacağınız 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'e eşittir.

-veya-

remoteEP, null'e eşittir.

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 AsyncCallbackBeginSendTo tamamlanması hakkında bildirim almak için uygulamasına 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 true olarak ayarlanır. yöntemine AsyncStateIAsyncResult geçirilen durum nesnesini almak için BeginSendTo özelliğini kullanın.

İşlemin BeginSendTo yöntemi çağrılarak EndSendTo tamamlanması gerekir. Genellikle yöntemi, 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 , , BeginConnectAcceptveya 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. Bunu yalnızca yöntemini çağırmak BeginSend istiyorsanız yapmanız gerekir. çağırmadan önce veya BeginConnect yöntemini çağırırsanız remoteEPConnectSendTo, 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 numaralı bağlantı noktası 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.

Bir 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. -Arabellek boyutunun, temel alınan hizmet sağlayıcısının en büyük paket boyutunu aşmadığından da emin olmanız gerekir. Bunu yaparsa, veri birimi gönderilmez ve EndSendTo bir SocketExceptionoluşturur.

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

Uyarı

bir SocketExceptionalırsanız, özelliğini kullanarak SocketException.ErrorCode belirli bir hata kodunu alın. 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.

Uyarı

Bu üye, uygulamanızda ağ izlemeyi etkinleştirdiğinizde izleme bilgilerini döndürür. Daha fazla bilgi için bkz. .NET Framework'te Ağ İzleme.

Uyarı

Yürütme bağlamı (güvenlik bağlamı, kimliğine bürünülen kullanıcı ve çağrı 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.