CAsyncSocket::ReceiveFrom

int ReceiveFrom ( โมฆะ * lpBuf, int nBufLen, CStringamp rSocketAddress, UINT & rSocketPort, int nFlags = 0 );

int ReceiveFrom ( โมฆะ * lpBuf, int nBufLen, SOCKADDR * lpSockAddr, int * lpSockAddrLen, int nFlags = 0 );

ส่งกลับค่า

ถ้าไม่มีข้อผิดพลาดเกิดขึ้นReceiveFromส่งกลับจำนวนของไบต์ที่รับ ถ้าการเชื่อมต่อถูกปิด จะส่งกลับ 0 มิฉะนั้น ส่งกลับค่าของSOCKET_ERRORและสามารถเรียกข้อมูลรหัสข้อผิดพลาดเฉพาะ โดยการเรียกGetLastError ข้อผิดพลาดต่อไปนี้ใช้ฟังก์ชันนี้สมาชิก:

พารามิเตอร์

lpBuf

บัฟเฟอร์สำหรับข้อมูลขาเข้า?

nBufLen

ความยาวของlpBufเป็นไบต์?

rSocketAddress

การอ้างอิงไปยังวัตถุที่CStringที่เป็นเส้นประหมายเลข IP แอดเดรสที่ได้รับ?

rSocketPort

การอ้างอิงไปยังUINTที่เก็บพอร์ต?

lpSockAddr

ตัวชี้ไปยังโครงสร้างแบบSOCKADDRที่เก็บอยู่ต้นทางเมื่อคืน?

lpSockAddrLen

เป็นตัวชี้ความยาวของแหล่งข้อมูลที่อยู่ในlpSockAddrในไบต์?

nFlags

ระบุวิธีการที่ทำการโทร ในความหมายของฟังก์ชันนี้จะถูกกำหนด โดยตัวซ็อกเก็ตและพารามิเตอร์nFlags หลังถูกสร้างขึ้น โดยรวมมีค่าต่อไปนี้ด้วยตัวดำเนินการ c ++ :

หมายเหตุ

เรียกฟังก์ชันนี้สมาชิกแกรมได้รับ และจัดเก็บแหล่งข้อมูลที่อยู่ ในโครงสร้างแบบSOCKADDRหรือrSocketAddress ใช้ฟังก์ชันนี้เพื่ออ่านข้อมูลขาเข้าบนซ็อกเก็ต (อาจเชื่อมต่อ) และอยู่ที่ส่งข้อมูลการจับภาพ?

สำหรับ sockets ชนิดSOCK_STREAMข้อมูลมากเป็นอยู่ในปัจจุบันได้ถึงขนาดของบัฟเฟอร์ที่ระบุให้มีการส่งกลับ ถ้าซ็อกเก็ตได้ถูกกำหนดค่าสำหรับการต้อนรับในบรรทัดออกของแถบข้อมูล (ซ็อกเก็ตตัวเลือกSO_OOBINLINE) และออกของแถบข้อมูลยังไม่ได้อ่าน เฉพาะออกของแถบข้อมูลจะถูกส่งกลับ แอปพลิเคชันสามารถใช้ตัวเลือกIOCtl SIOCATMARKหรือOnOutOfBandDataเพื่อตรวจสอบว่า ข้อมูลใด ๆ เพิ่มเติมออกของวงยังคงสามารถอ่าน พารามิเตอร์lpSockAddrและlpSockAddrLenจะถูกละเว้นสำหรับSOCK_STREAM sockets?

สำหรับ datagram sockets ข้อมูลถูกแยกจาก datagram enqueued ตัวแรก ถึงขนาดของบัฟเฟอร์ที่ระบุให้ ถ้าเดตาแกรมมีขนาดใหญ่กว่าบัฟเฟอร์ที่ระบุให้ บัฟเฟอร์จะถูกกรอกข้อมูล ด้วยส่วนแรกของข้อความ ข้อมูลส่วนเกินหายไป และReceiveFromส่งกลับค่าของSOCKET_ERRORกับWSAEMSGSIZEการตั้งค่ารหัสข้อผิดพลาด?

ถ้าlpSockAddrไม่ใช่ศูนย์ และซ็อกเก็ตเป็นชนิดSOCK_DGRAMอยู่เครือข่ายของซ็อกเก็ตที่ส่งข้อมูลถูกคัดลอกไปโครงสร้างของSOCKADDRที่สอดคล้องกัน ค่าตัวชี้ไปตามlpSockAddrLenถูกเตรียมใช้งานขนาดของโครงสร้างนี้ และมีการปรับเปลี่ยนการกลับมาเพื่อระบุขนาดของเก็บไว้มีอยู่จริง ถ้าไม่มีขาเข้ามีข้อมูลที่ซ็อกเก็ต สายReceiveFromรอข้อมูลถึงยกเว้นเป็นซ็อกเก็ต nonblocking ในกรณีนี้ ค่าของSOCKET_ERRORถูกส่งคืน ด้วยรหัสข้อผิดพลาดการตั้งค่าWSAEWOULDBLOCK ติดต่อกลับOnReceiveคุณสามารถใช้เพื่อกำหนดว่าเมื่อเข้ามาเพิ่มเติมข้อมูล?

ถ้าซ็อกเก็ตชนิดSOCK_STREAMและด้านระยะไกลถูกปิดการเชื่อมต่ออย่างสิ้นเชิงReceiveFromจะเสร็จสมบูรณ์ ด้วย 0 ไบต์ที่รับทันที?

ภาพรวม CAsyncSocket |nbsp สมาชิกของคลาส| แผนภูมิของลำดับชั้น(&N)

ดูเพิ่มเติมnbspCAsyncSocket::AsyncSelect, CAsyncSocket::Create, CAsyncSocket::Receive, CAsyncSocket::Send(&N)

Index