Aracılığıyla paylaş


Socket.BeginReceiveFrom Yöntem

Tanım

Belirtilen bir 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

buffer
Byte[]

Alınan verilerin depolama konumu olan tür Byte dizisi.

offset
Int32

Verilerin depolandığı parametredeki 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 okumaya 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 AsyncCallbackBeginReceiveFrom 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 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 true olarak ayarlanır. yöntemine AsyncStateIAsyncResult geçirilen durum nesnesini almak için BeginReceiveFrom özelliğini 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 birimleri almayı planlı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 bufferBeginReceiveFrom 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 yöntemini yeterince büyük bir arabellekle çağırarak BeginReceiveFrom alabilirsiniz.

Uzak konak uç noktasının her zaman döndürüldüğünü garanti etmek için, bir uygulama yöntemini kullanarak Bind öğesini açıkça yerel bir uç noktaya bağlamalı Socket ve ardından SetSocketOption yöntemini optionLevel parametresi veya uygun olarak ayarlanmış IPv6IP, optionName parametresi olarak PacketInformationayarlanmış ve optionValue yöntemi çağırmadan önce bu seçeneği etkinleştirmek için parametresini BeginReceiveFrom çağırmalıdır. Aksi takdirde, alıcı yöntemi ç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 etmeniz gerekir.BeginAccept Bağlantı kurmadan veya kabul etmeden önce yöntemini çağırırsanız BeginReceiveFrom , bir SocketExceptionalırsınız. Ayrıca, 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 .

Uyarı

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