תרגול רשת אסינכרונית ועומס¶
תרגיל ראשון - שלוש השלמות¶
הריצו את הניסוי בלי לקוח, עם לקוח ששולח מיד, ועם לקוח שמתחבר אבל שותק מעל חמש שניות. תעדו את תוצאת קבלת החיבור ואת תוצאת הקריאה בנפרד. אל תניחו שמספר הbytes יהיה זהה בכל הרצה.
הסבירו מדוע נבחר אורך מידע התחלתי אפס בAcceptEx. כתבו מה היה משתנה אילו היינו מבקשים גם byte ראשון כחלק מהקבלה.
תרגיל שני - חיבור נסגר לוגית¶
תכננו חיבור עם שתי פעולות פעילות: קריאה וכתיבה. המשתמש מבקש סגירה, ואז מגיעה הצלחת כתיבה והשלמת קריאה מבוטלת. ציירו כל מעבר של מונה הפעולות וסמנו מתי מותר לשחרר את החיבור ואת שני הbuffers.
חזרו על התרגיל כשהקריאה הושלמה בהצלחה רגע לפני בקשת הביטול. הסבירו מדוע סוג התוצאה אינו משנה את החובה לספור completion אחד לכל פעולה שהוגשה.
תרגיל שלישי - לקוח איטי¶
תכננו תקציב לשרת עם עד מאה חיבורים, עד ארבע בקשות פעילות בכל חיבור ועד 32 קילובייט של תשובות ממתינות לכל חיבור. הוסיפו מגבלה גלובלית של שני מגהבייט. הגדירו איזו מגבלה נבדקת לפני יצירת תשובה, ואיך משחררים שמירת תקציב בכשל או בניתוק.
כתבו בדיקה עם לקוח שלא קורא תשובות. ההצלחה אינה רק שהשרת לא קרס: הגישו bound על זיכרון ממתין והוכחה שהלקוח האיטי לא מונע מכל האחרים להתקדם.