看板 C_and_CPP 關於我們 聯絡資訊
開發平台(Platform): (Ex: Win10, Linux, ...) Linux 編譯器(Ex: GCC, clang, VC++...)+目標環境(跟開發平台不同的話需列出) G++ 問題(Question): 各位版友好,我正在寫一個UDP echo client 題目的spec如下:https://quiz.zoolab.org 其中的第三題,Level 2: Welcome, again 題目運行的server環境為 ssh [email protected],密碼z3wk 這是我運行我的程式後的狀況 首先先用UDP隨意送一段訊息給server後 就會進入echo解題的畫面。 https://i.imgur.com/2xkdDCY.png
再來進入到解題畫面時會看到錯誤畫面如下 https://i.imgur.com/94qxMaD.png
我有試著把我接收到的buffer跟送出去的buffer印出來debug, 但是沒有找到什麼異常,想請版友幫我看看有沒有什麼我沒注意到的部分。 程式碼(Code):(請善用置底文網頁, 記得排版,禁止使用圖檔) http://codepad.org/yDPQhV5k 補充說明(Supplement): 4:39更新 我把回傳的buffer轉成string後再傳就突然好了 ...我不理解,如果有版友知道原因請賜教。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 123.192.89.105 (臺灣) ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1640980944.A.96B.html ※ 編輯: ketchupgood (39.12.99.74 臺灣), 01/01/2022 04:42:01
LPH66: 這是期末考吧? 01/01 09:52
ketchupgood: 是期末考 考完開放回去補交七折 所以類似作業吧 01/01 10:12
LPH66: 雖然不是很確定是不是問題所在: 思考一下 46 行你傳的長度 01/01 10:47
LPH66: 到底對不對; 是不是有真的「echo」回去所有東西 01/01 10:48
LPH66: 啊, 或者該說: 是不是多傳了東西回去 01/01 10:49
ketchupgood: 如果你指的是換行的話 那是要加的 我後來正確的版本 01/01 11:36
ketchupgood: 也有加 01/01 11:36
ketchupgood: 我把現在的buffer加上反斜線0 轉成string後再丟buffe 01/01 11:40
ketchupgood: r.c_str()後就正確了 01/01 11:40
gusion: 如果收4096 bytes,你的\n會加在buffer外,是否是因此出錯 01/01 12:20
gusion: ? 01/01 12:20
ketchupgood: 測資內沒有數字那麼大的 所以應該不是 不過這部分寫 01/01 13:50
ketchupgood: 法可以改善沒錯 01/01 13:50
gusion: 另外,sendto傳送的長度是sizeof(udp_buffer),也就是4096 01/01 18:07
gusion: ,是否應該用n+1或n+2?即收到的字串長度加\n和\0 01/01 18:07
gusion: 還有個問題就是如果收到的是 hello\0world這樣的data,是 01/01 18:17
gusion: 要回傳hello\n還是hello\0world\n?因為你說轉string就行 01/01 18:18
gusion: ,也許有這樣的case 01/01 18:18