CAsyncSocket::ReceiveFrom

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

Index