服务器未收到UDP数据包,花费数小时试图找出问题所在
Server not receiving UDP packets, been spending hours trying to figure out what's wrong
因此,对于我们的第一个任务,我们使用TCP制作了一个基本的FTP程序,现在我们必须对其进行修改以使用UDP,也将其发送到路由器程序(我们无法修改,但已有要查看的代码)将随机删除和延迟数据包,并使用简单的停止和等待协议处理。但这不是问题。
我修改了客户端和服务器以使用我的实验室老师的注释(http://www.cs.concordia.ca/~ste_mors/comp445/comp445/assign2tutorial.ppt),我要做的就是发送一个数据包,当我在另一端收到它时,打印了一行文本。我遵循幻灯片中的说明,在Localhost上运行它(没有其他机器可以测试)并发送,并且路由器确认它接收并转发数据包,但是服务器从未打印过文本线。知道UDP丢弃了很多我制作的(true)永远发送数据包的循环,服务器仍然什么都不做。
这是到目前为止的代码:客户端:http://pastebin.com/xdbxuj9r服务器:http://pastebin.com/in5j2ku3送给我们的路由器无法解码:http://pastebin.com/qwmac0mw
对于客户,我在连接始于旧连接后留下的所有内容,发送行是175,在服务器中,我在运行循环中评论了所有内容,除了在第181行
处的接收零件外我将绝对疯狂地尝试解决这个问题。我不得不取消计划并毁了我的整天,因为我无法使这件事有效。:(
我可以告诉您使用错误的端口。这是路由器的定义:
// router.h
#define ROUTER_PORT1 7000 //router port number 1
#define ROUTER_PORT2 7001 //router port number 2
#define PEER_PORT1 5000 //port number of peer host 1
#define PEER_PORT2 5001 //port number of peer host 2
这就是您的定义:
// client.cpp
#define REQUEST_PORT 0x5000 // hexadecimal, that's port 20480
和
// server.cpp
#define REQUEST_PORT 0x5001 // hexadecimal, that's port 20481
我没有检查其余的代码,但是服务器在纠正端口号后似乎会收到一些东西(如删除0x
前缀)
也许这将有助于说明路由器的工作方式:
// the router does (pseudocode):
recvfrom(7000), sendto(PEER2:5001)
recvfrom(7001), sendto(PEER1:5000)
相关文章:
- C++:Application.cpp中抛出了未解析的外部符号(解决方案在问题的末尾,供未来的读者参考)
- 算法问题:查找从堆栈中弹出的所有序列
- 当我尝试添加 2 个大字符串时,我无法弄清楚出了什么问题
- 阶乘问题在 c++ 中给出错误的输出
- C++泛型类错误,问题出在哪里?
- 任何人都可以告诉我我的 C++ 代码出了什么问题?
- 数组为此合并排序函数提供了正确的输出,但向量给出了不正确的输出.出了什么问题?
- reinterpret_cast,只读访问,简单的可复制类型,会出什么问题?
- 在Hackerearth上获取运行时错误(SIGSEGV),无法找出代码中的问题
- 不确定出了什么问题(字符串输入)
- 我无法找出我的代码出了什么问题
- 我想知道变焦和轨道在哪里出了问题
- 我的C++级数计算程序出了什么问题?被困了好几个星期
- Rand() 没有显示随机数,请帮助我了解出了什么问题:)
- 向量<对<双精度,双精度>>给出问题
- 滚动条缩略图跟踪长度 基于图像的水平适合调整窗口大小时出现问题
- 服务器未收到UDP数据包,花费数小时试图找出问题所在
- 传递字符串指针然后检查构造函数/方法中的大小时出现问题
- C++ 输出找出问题
- 在成功运行10小时后,在发布模式下从windows应用程序中获得异常,如何检测出问题