קיבלתי תרגיל בית לכתוב שרת web שמטפל בבקשות http (הבסיסיות לפחות)... ב-TCP כמובן. את השרת כתבתי אבל כל זאת בהנחה שאני קורא מסוקט כלשהו אז תמתין לי שם בדיוק בקשת http אחת... את הקריאות מסוקטים אני מבצע בלולאה אינסופית בעזרת הפונ' select. האם יכול להיווצר מצב שממתינות לי 2 בקשות בסוקט? למשל אם בקשה אחת נשלחה ואיכשהו התעקבה ואז נשלחה עוד אחת, ושתיהן הגיעו יחד...
לכל קליינט יש סוקט אחד בדיוק, מתי שאני מקבל מידע לבאפר של הסוקט הזה, הפונ' select מודיעה לי ואני ישר שולף אותו... אז יכולות להיות שם יותר מ-2 בקשות אם בזמן הקריאה/עד שאני מתחיל לקרוא מגיעות עוד בקשות... לא?
ושאתה תקרא מהסוקט יש 2 אפשריות.. מה שרוב הסיכויים יקרא זה שהוא יתן לך את התוכן של הפאקטה הראשונה ואז שוב תעשה SELECT ואז הוא שוב יגיד לך שיש לך לקרוא מהסוקט הזה.. או שזה יחבר את 2 ההודעות ביחד... (אם זה יכנס לך בבאפר..) שזה אחת מהסיבות שמשתמשים בכל מיני סימנים מזהים לסוף הודעה (דוגמא \r\n שנהוג בהרבה פרוטוקולים..)