int ReceiveFrom ( void * lpBuf, int nBufLen, CStringamp; rSocketAddress, UINT & rSocketPort, int nFlags = 0 );
int ReceiveFrom ( void * lpBuf, int nBufLen, sockaddr * lpSockAddr, int * lpSockAddrLen, int nFlags = 0 );
Dönüş değeri
Hata oluşmazsa, ReceiveFrom alınan bayt sayısını döndürür. Bağlantı kapatıldı, 0 döndürür. Aksi takdirde, socket_error değeri döndürülür ve bir özel hata kodu GetLastErrorçağırarak alınabilir. Üye işlev aşağıdaki hataları uygulama:
Parametreleri
lpBuf
Gelen veri arabelleği.
nBufLen
LpBuf bayt cinsinden uzunluğu.
rSocketAddress
Noktalı bir numara IP adresi alan CString nesnesine başvuru.
rSocketPort
Bağlantı noktası depolayan bir UINT referansı.
lpSockAddr
İşaretçi kaynak adresin üzerine geri tutan sockaddr yapısı.
lpSockAddrLen
Bir işaretçi kaynağı adres lpSockAddr bayt cinsinden uzunluğu.
nFlags
Çağrının yapıldığı yolunu belirtir. Bu işlev semantiği, soket seçenekleri ve nFlags parametresi tarafından belirlenir. İkincisi şu değerlerden herhangi bir c++ veya işleciyle birleştirerek oluşturulur:
Açıklamalar
Bir veri birimi alma ve kaynak adresi sockaddr yapısındaki veya rSocketAddressbu üye işlevini çağırın. Bu işlev (muhtemelen bağlı) soket üzerinden gelen veri okuma ve veri gönderildiği adres yakalamak için kullanılır.
İçin daha fazla yuva türü sock_streamkadar bilgi sağlanan arabellek boyutuna kadar mevcut olduğu gibi döner. Soket band dışı veri (soket seçeneği SO_OOBINLINE) hat alımı için yapılandırılmış ve band dışı veri okunmamış ise, yalnızca bant verisi döndürülmeyecek. Uygulama, IOCTLSIOCATMARK seçeneği ya da OnOutOfBandData , daha fazla-bant veri okumak için kalır belirlemek için kullanabilirsiniz. sock_stream yuva için lpSockAddr ve lpSockAddrLen parametreleri yoksayılır .
Datagram soketleri için sağlanan arabellek boyutuna varan ilk enqueued datagram veri çıkarılan. Datagram sağlanan arabellekten büyükse, arabellek iletiyi ilk bölümü ile doldurulur, aşırı veriler kaybolur ve ReceiveFrom ile hata kod WSAEMSGSIZE için socket_error değerini döndürür.
LpSockAddr sıfırdan farklı ve soket türü sock_dgram, veri gönderen soket ağ adresi ilgili sockaddr yapısına kopyalanır. LpSockAddrLen tarafından işaret değer, bu yapının büyüklüğüne başlatılır ve depolanan adres boyutunu belirtmek için geri güncellenmiştir. Gelen veri yok yuva varsa, ReceiveFrom çağrı soket olmadıkça gelmesi için veri bekler yapmayan. Bu durumda, socket_error değerini ayarlamak için wsaewouldblockhata kodu döndürülür. OnReceive geri daha fazla veri ulaştığında belirlemek için kullanılabilir.
Soket türü sock_stream ve uzak tarafı bağlantı incelikle kapattı, bir ReceiveFrom hemen 0 bayt alındı tamamlayacak.
CAsyncSocket genel bakış |nbsp; Sınıf üyeleri | Hiyerarşi çizelgesi
Ayrıca bkz: CAsyncSocket::AsyncSelect, CAsyncSocket::Create, CAsyncSocket::Receive, CAsyncSocket::Send