Socket.BeginSendTo Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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
- 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 .
- 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
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.
Kapatılmış Socket .
Ç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.