פורסם 2011 ביולי 314 שנים היי , מחיפושים ברשת מצאתי מימוש של isconnected בשביל sockets!(client.Client.Poll(1, SelectMode.SelectRead) && client.Client.Available == 0);[pre]לא כזה ברור לי איך זה עובד, האם זמן של 1 מילי שנייה מספיק כדי לקבל תגובה, וגם poll מחזיר true גם אם יש מידע אפשרי לקריאהכלומר isconnected יחזיר false.תודה[/pre]
פורסם 2011 ביולי 314 שנים מחבר צודק, מצטער , אני מדבר על c#הפונקצייה המלאהpublic static bool IsConnected(this TcpClient client){ try { bool connected = !(client.Client.Poll(1, SelectMode.SelectRead) && client.Client.Available == 0); return connected; } catch { return false; }}לא ברור לי כ"כ איך זה עובד , והאם זמן של 1 מיקרו שנייה מספיק בשביל polling
פורסם 2011 ביולי 314 שנים public static bool IsConnected(TcpClient client) { return client.Client.Connected; }יש לי הרגשה שזה לא התשובה שחיפשת. בכל מקרה תגיד אם זה עזר
פורסם 2011 ביולי 414 שנים מחבר זה לא כ"כ עוזר כי socket.connected מחזיר את מצב החיבור לפי הפעולה האחרונה שבוצעה ולא לפי המצב העדכני.אבל תודה בכל מקרה
פורסם 2011 ביולי 414 שנים אני חושב ש POLL יחזיר לך FALSE גם במידה וה SOCKET עדיין מחובר, אבל אין שום נתונים חדשים לקרוא (הצד השני לא שלח שום דבר), אז זה לא ממש מציין אם הוא מחובר.מה שכן, אם תעשה TIMEOUT של 10 שניות למשל, והצד השני יתנק בזמן הזה, אז POLL יחזיר TRUE, ו AVIALABLE יהיה 0, זה אינדיקציה לניתוק שהתרחש.הדרך הכי בטוחה לדעת אם אחד הצדדים מחובר, היא לעשות PING.
פורסם 2011 ביולי 414 שנים public bool Poll(int microseconds, SelectMode mode);Checks the status of a Socket. The first argument specifies the number of microseconds to wait for a response. A negative value indicates blocking indefinitely.The status checked depends on the SelectMode enumeration argument. SelectMode.SelectRead checks for readability. SelectMode.SelectWrite checks for writeability. SelectMode.SelectError checks for the existence of an errorויתר ביטחון שאל על שלושת סוגי הMODE כדי להיות בטוח שהוא בחובר.מקווה שעזרתי!
ארכיון
דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.