[问题] 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