הגידו נא

הגידו נא

והיה ויש לי socket של client מקושר ל socket אחר של server. קרה המקרה והמחשב server התנתק. שמא יש לי דרך לתשאל את ה socket שלי (client) האם הוא עדיין מחובר. שמא? או שמא לא?
 

voguemaster

New member
יש כמה מצבים בעצם

1. אם השרת המרוחק נפל וה-TCP שלו לא הספיק לשלוח משהו שיציין סגירת חיבור (FIN באופן רגיל או RST במצב לא נעים אחר) אז בפעם הבאה שתנסה לשלוח אליו, אחד משני דברים יקרו: א' - אם הוא לא זמין בכלל תקבל TIMEOUT. ב' - אם הוא הספיק לעלות שוב תקבל RST כי ה-TCP שלו לא יודע על החיבור מלפני ה-CRASH. 2. אם אפליקצית השרת נפלה (לא המקרה שלך אבל אני ארשום בכל זאת) - תקבל מה-TCP שלו FIN. 3. אם הוא סתם התנתק מהרשת תקבל timeout כלשהו או host unreachable. בכל מקרה בשליחה של מידע לשרת תקבל error כלשהו. הבעיה שאם אתה לא שולח מידע אלא רק מחכה שמידע יישלח אליך אתה עלול לחכות לנצח (אלא אם כן אתה משתמש ב-keepalive)
 
למעלה