C ++ UDP客户端问题

时间:2011-07-07 11:57:23

标签: c++ networking client udp wireless

我正在开发一个可靠的基于UDP的文件共享程序。该计划由两部分组成。 服务器和客户端。 任何客户端都可以请求下载任何文件。发生这种情况时,服务器应通知拥有要下载的文件的客户端,有人想下载该文件。然后,服务器应以某种方式向客户端指示正在尝试下载文件的IP和具有该文件的客户端的端口。

该计划差不多完成了。包括ACKing机制。但我有一个问题,我在过去几个小时内无法解决。如果我在与我的服务器相同的机器上启动程序的客户端部分,并在另一台机器上打开另一个客户端实例,一切都很好。但是,如果我在一台计算机上打开服务器并在不同的计算机上打开客户端程序,则无法将文件从一个客户端发送到另一个客户端。我不知道什么可能导致这个问题。如果您给我发电子邮件,我很乐意向您发送解决方案我不想在这里发布1000行代码。

编辑: 好。我尝试了所有可能的场景,仍然没有解决方案我开始考虑问题可能与程序无关,可能与我的网络连接有关。 我用作服务器的计算机使用以太网直接连接到路由器,但其他计算机使用无线连接。我不确定它是否有所作为?我还尝试在我的一台无线计算机上运行服务器应用程序,但其他计算机无法连接到它。所以看起来这个问题与无线网络有关。

1 个答案:

答案 0 :(得分:0)

嗯,没有你的协议的细节,很难说出问题可能是什么,但是这里有一些建议:

  1. 在服务器和客户端之间的协议中,检查请求文件的客户端是否正确请求它。
  2. 服务器和第二个客户端之间的下一步,检查您的协议是否发送了正确的请求
  3. 检查第二个客户端是否生成了正确的响应(例如,我有文件或我没有)
  4. 检查服务器是否正确处理此响应
  5. 检查服务器是否将第二个客户端的正确IP地址发送到第一个
  6. 检查第一个客户端是否具有到第二个客户端的网络连接(例如防火墙等)
  7. 检查客户端中的处理逻辑是否正确处理了响应。
  8. 通常,您应该能够通过在客户端/服务器代码中进行适当的日志记录,以及从第一个客户端到第二个客户端的简单telnet / ping等来完成上述操作。

    只是从评论中提出一些内容......在UDP上实现可靠的协议是一件棘手的事情,但是一个好的起点是假设你的代码被破坏并调查(如上面的步骤)首先... < / p>