บัฟเฟอร์ recv ของฉันควรใหญ่แค่ไหนเมื่อเรียก recv ในไลบรารีซ็อกเก็ต
ฉันมีคำถามสองสามข้อเกี่ยวกับซ็อกเก็ตไลบรารี่ในซีนี่คือตัวอย่างของโค้ดที่ฉันจะอ้างถึงในคำถามของฉัน char recv_buffer[3000]; recv(socket, recv_buffer, 3000, 0); ฉันจะตัดสินใจได้อย่างไรว่าจะสร้าง recv_buffer ขนาดใหญ่ได้อย่างไร ฉันใช้ 3000 แต่มันไม่มีข้อ จำกัด จะเกิดอะไรขึ้นหากrecv()ได้รับแพ็คเก็ตที่ใหญ่กว่าบัฟเฟอร์ของฉัน ฉันจะรู้ได้อย่างไรว่าฉันได้รับข้อความทั้งหมดโดยไม่ต้องโทร recv อีกครั้งและรอมันตลอดไปเมื่อไม่มีอะไรจะได้รับ? มีวิธีที่ฉันสามารถสร้างบัฟเฟอร์ไม่ได้มีพื้นที่จำนวนคงที่เพื่อให้ฉันสามารถเพิ่มไปเรื่อย ๆ โดยไม่ต้องกลัวที่จะหมดพื้นที่? อาจใช้strcatเพื่อเชื่อมการrecv()ตอบสนองล่าสุดกับบัฟเฟอร์หรือไม่ ฉันรู้ว่ามันเป็นคำถามจำนวนมากในหนึ่งเดียว แต่ฉันจะขอบคุณคำตอบอย่างมาก