[問題] UDP echo client 除錯

作者: ketchupgood (番茄醬)   2022-01-01 04:02:20
開發平台(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後再傳就突然好了
...我不理解,如果有版友知道原因請賜教。
作者: LPH66 (-6.2598534e+18f)   2022-01-01 09:52:00
這是期末考吧?
作者: ketchupgood (番茄醬)   2022-01-01 10:12:00
是期末考 考完開放回去補交七折 所以類似作業吧
作者: LPH66 (-6.2598534e+18f)   2022-01-01 10:47:00
雖然不是很確定是不是問題所在: 思考一下 46 行你傳的長度到底對不對; 是不是有真的「echo」回去所有東西啊, 或者該說: 是不是多傳了東西回去
作者: ketchupgood (番茄醬)   2022-01-01 11:36:00
如果你指的是換行的話 那是要加的 我後來正確的版本也有加我把現在的buffer加上反斜線0 轉成string後再丟buffer.c_str()後就正確了
作者: gusion   2022-01-01 12:20:00
如果收4096 bytes,你的\n會加在buffer外,是否是因此出錯?
作者: ketchupgood (番茄醬)   2022-01-01 13:50:00
測資內沒有數字那麼大的 所以應該不是 不過這部分寫法可以改善沒錯
作者: gusion   2022-01-01 18:07:00
另外,sendto傳送的長度是sizeof(udp_buffer),也就是4096,是否應該用n+1或n+2?即收到的字串長度加\n和\0還有個問題就是如果收到的是 hello\0world這樣的data,是要回傳hello\n還是hello\0world\n?因為你說轉string就行,也許有這樣的case

Links booklink

Contact Us: admin [ a t ] ucptt.com