![]() |
גודל פאקט מירבי בשליחה דרך פרוטוקול UDP
יש לי פרוייקט די גדול בC++ שאני עובד עליו בזמן הפנוי שלי
אחת מהפונקציונליות שלו זה שליחת פאקט בגודל מירבי שלא יגרום לקריסת המערכת משום מה פאקט בגודל 65500 נשלח ללא בעיה אך כל בייט מעל גורם לקריסת התוכנה עם הודעת שגיאה abort() חיפשתי קצת בגוגל על גודל מאקסימלי של פאקט UDP ולא מצאתי תשובה שהבהירה לי כמה באמת אפשר לשלוח בתור מאקסימום.. מאחר שבחלק צויין גם המספר 65535 (שאצלי גורם לקריסה). ייתכן ופאקט בגודל 65500 עובד אצלי ואצל מחשב אחר יגרום לקריסה? אסור לי לתת לזה לקרות אני חייב לדאוג לכל מקרי הקיצון... הקוד בC++ אם כי לא נראה לי שזה כלכך משנה: בקישור הבא: (אני תמיד מעדיף לראות את זה עם הhighlights) http://pastebin.com/LKZseYTV או כאן: קוד:
void send_max_udp_packet(std::string host, std::string port) |
התעסקתי קצת לחקור את הבעיה וגיליתי
שהיו כאן 2 בעיות שחשבתי שקשורות אחת לשנייה באופן ישיר אבל למעשה היו קשורות באופן עקיף הגעתי למסקנה שגודל הפאקט לא גורם לקריסת התוכנית - אלא אי טיפול ב"חריגים". כל זריקה של throw (Exception) שלא מטופלת גורמת לתוכנית לקרוס. (נקודה ידועה, הבעיה שלא ידעתי שSend_To זורק Exceptions). אחרי שטיפלתי בExceptions התוכנית לא קורסת אלא זורקת הודעה שגיאה - כמו שאמור לקרות. השאלה שלי השתנתה מה שאני רוצה לדעת עכשיו זה האם גודל פאקט UDP משתנה ממחשב למחשב? ואם כן האם יש דרך למדוד את הגודל המירבי של הפאקט? |
אין אפשרות לעבור את הטווח הזה 0-65500.
תמצא דרך אחרת, זה לא בעיה אצלך. |
חשבתי גם כמוך אבל אם ככה למה בPHP אני מצליח לשלוח פאקט UDP בגודל 65535 ?
פונקציה שכתבתי ב PHP ששולחת פאקט בגודל 65535 קוד:
for($i=0;$i<65535;$i++){ |
על איזו מערכת הפעלה מדובר ובאיזה קומפיילר+סביבת עבודה אתה מפתח?
*65536 זה הגודל המקסימאלי של מספר שלם בגודל 2 בייטים זה צריך להיות קשור לזה. |
כן הדבר המוזר זה שמעל 65500 זה כבר זורק Exceptions
אני מפתח בסביבת עבודה של מיקרוסופט MVC++ 2010 ומשתמש ב Windows 7 |
http://en.wikipedia.org/wiki/User_Da...cket_structure
אתה צריך לחלק את המידע שלך ל CHUNKS ולשלוח כל CHUNK בנפרד, בPHP כנראה הוא מטפל בזה |
כל הזמנים הם GMT +2. הזמן כעת הוא 20:53. |
מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ