יש לי פרוייקט די גדול בC++ שאני עובד עליו בזמן הפנוי שלי
אחת מהפונקציונליות שלו זה שליחת פאקט בגודל מירבי שלא יגרום לקריסת המערכת
משום מה פאקט בגודל 65500 נשלח ללא בעיה אך כל בייט מעל גורם לקריסת התוכנה
עם הודעת שגיאה abort()
חיפשתי קצת בגוגל על גודל מאקסימלי של פאקט UDP ולא מצאתי תשובה שהבהירה לי
כמה באמת אפשר לשלוח בתור מאקסימום.. מאחר שבחלק צויין גם המספר 65535 (שאצלי גורם לקריסה).
ייתכן ופאקט בגודל 65500 עובד אצלי ואצל מחשב אחר יגרום לקריסה?
אסור לי לתת לזה לקרות אני חייב לדאוג לכל מקרי הקיצון...
הקוד בC++ אם כי לא נראה לי שזה כלכך משנה:
בקישור הבא: (אני תמיד מעדיף לראות את זה עם הhighlights)
http://pastebin.com/LKZseYTV
או כאן:
קוד:
void send_max_udp_packet(std::string host, std::string port)
{
// C++ Boost declarations of Sockets
boost::asio::io_service io_service;
udp::resolver resolver(io_service);
udp::resolver::query query(udp::v4(), host, port);
udp::endpoint receiver_endpoint = *resolver.resolve(query);
udp::socket socket(io_service);
socket.open(udp::v4());
// Filling array with 65500 bytes (65530+ making my program crash for some reason)
boost::array<char, 65500> send_buf = { 'X' };
// Sending throught UDP the packet
socket.send_to(boost::asio::buffer(send_buf), receiver_endpoint);
}