Socket.BeginReceiveFrom 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.
Belirtilen ağ cihazından zaman uyumsuz olarak veri almaya başlar.
public:
IAsyncResult ^ BeginReceiveFrom(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 BeginReceiveFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback? callback, object? state);
public IAsyncResult BeginReceiveFrom (byte[] buffer, int offset, int size, System.Net.Sockets.SocketFlags socketFlags, ref System.Net.EndPoint remoteEP, AsyncCallback callback, object state);
member this.BeginReceiveFrom : byte[] * int * int * System.Net.Sockets.SocketFlags * EndPoint * AsyncCallback * obj -> IAsyncResult
Public Function BeginReceiveFrom (buffer As Byte(), offset As Integer, size As Integer, socketFlags As SocketFlags, ByRef remoteEP As EndPoint, callback As AsyncCallback, state As Object) As IAsyncResult
Parametreler
- offset
- Int32
Verilerin depolandığı parametrede buffer
sıfır tabanlı konum.
- size
- Int32
Alınacak bayt sayısı.
- socketFlags
- SocketFlags
Değerlerin bit düzeyinde birleşimi SocketFlags .
- remoteEP
- EndPoint
Zaman uyumlu almada güncelleştirilecek uzak konağın uç noktasıyla aynı türde bir EndPoint başvuru.
- callback
- AsyncCallback
Temsilci AsyncCallback .
- state
- Object
Bu istek için durum bilgilerini içeren bir nesne.
Döndürülenler
IAsyncResult Zaman uyumsuz okuma işlemine 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 AsyncCallbackBeginReceiveFrom 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 BeginReceiveFromsatı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 BeginReceiveFrom özelliğini IAsyncResult kullanın.
Zaman uyumsuz BeginReceiveFrom işlem yöntemi çağrılarak EndReceiveFrom tamamlanmalıdır. Genellikle yöntemi temsilci tarafından çağrılır AsyncCallback . EndReceiveFrom işlem tamamlanana kadar çağıran iş parçacığını engeller.
Bu yöntem verileri parametresine buffer
okur ve verilerin gönderildiği uzak konak uç noktasını yakalar. Bu uç noktayı alma hakkında bilgi için bkz EndReceiveFrom. . Bu yöntem, bilinmeyen bir konaktan veya birden çok konaktan zaman uyumsuz veri birimlerini zaman uyumsuz olarak almayı amaçlıyorsanız en kullanışlı yöntemdir. Bu gibi durumlarda, BeginReceiveFrom yerel ağ arabelleğine alınan ilk sıralanmış veri birimi okunur. Aldığınız veri birimi boyutundan buffer
BeginReceiveFrom büyükse, yöntemi iletinin mümkün olduğunca büyük bir kısmını doldurur buffer
ve bir SocketExceptionoluşturur. Güvenilir olmayan bir protokol kullanıyorsanız fazla veriler kaybolur. Güvenilir bir protokol kullanıyorsanız, fazla veriler hizmet sağlayıcısı tarafından korunur ve yeterince büyük bir arabellekle yöntemini çağırarak BeginReceiveFrom bunu alabilirsiniz.
Uzak konak uç noktasının her zaman döndürülmesi için, bir uygulama yöntemini kullanarak öğesini açıkça yerel bir uç noktaya bağlamalı Socket ve ardından yöntemini parametresi veya uygun optionName
şekilde, IPv6IP parametresi olarak ayarlanmış PacketInformationoptionValue
ve yöntemini çağırmadan önce bu seçeneği etkinleştirmek için parametresiyle optionLevel
çağırmalıdır SetSocketOptionBeginReceiveFrom.Bind Aksi takdirde, alıcı yöntemini çağırmadan önce gönderen bir dizi veri birimi gönderdiğinde uzak konak uç noktasının BeginReceiveFrom döndürülmemesi mümkündür.
Bağlantısız protokoller için tasarlanmış olsa BeginReceiveFrom da, bağlantı odaklı bir protokol de kullanabilirsiniz. Bunu yapmayı seçerseniz, önce yöntemini çağırarak bir uzak konak bağlantısı kurmanız veya veya yöntemini çağırarak ConnectAccept / BeginConnect gelen bir bağlantı isteğini kabul etmelisiniz.BeginAccept Bir bağlantı kurmadan veya kabul etmeden önce yöntemini çağırırsanız BeginReceiveFrom , bir SocketExceptionalırsınız. Yöntemini çağırmadan BeginReceiveFrom önce bağlantısız bir protokol için varsayılan uzak konak da oluşturabilirsiniz.
remoteEp
parametresi
Bağlantı odaklı yuvalarda, BeginReceiveFrom parametresi tarafından size
belirtilen bayt sayısına kadar kullanılabilir olan kadar veri okur.
Bekleyen BeginReceiveFrombir öğesini iptal etmek için yöntemini çağırın Close .
Not
bir alırsanız, belirli bir SocketExceptionhata kodunu almak için özelliğini kullanın SocketException.ErrorCode .
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.