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ş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 .
- 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 buffer
bü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 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.