Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ UDP客户端问题_C++_Networking_Client_Udp_Wireless - Fatal编程技术网

C++ UDP客户端问题

C++ UDP客户端问题,c++,networking,client,udp,wireless,C++,Networking,Client,Udp,Wireless,我正在开发一个可靠的基于UDP的文件共享程序。该程序由两部分组成。 服务器和客户端。 任何客户都可以请求下载任何文件。发生这种情况时,服务器应通知拥有要下载文件的客户端有人要下载该文件。然后,服务器应该以某种方式向尝试下载该文件的客户端指示拥有该文件的客户端的IP和端口 节目快结束了。包括确认机制。但我有一个问题,在过去的几个小时里我无法解决。如果我在服务器所在的同一台机器上启动程序的客户机部分,并在另一台机器上打开客户机的另一个实例,那么一切都会正常工作。但是,如果我在一台机器上打开服务器,在

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

节目快结束了。包括确认机制。但我有一个问题,在过去的几个小时里我无法解决。如果我在服务器所在的同一台机器上启动程序的客户机部分,并在另一台机器上打开客户机的另一个实例,那么一切都会正常工作。但是,如果我在一台机器上打开服务器,在不同的机器上打开客户端程序,我就无法将文件从一个客户端发送到另一个客户端。我不知道是什么可能导致这个问题。如果你给我你的电子邮件,我很乐意给你发送解决方案。我不想在这里发布1000行代码

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

嗯,如果没有协议的详细信息,很难判断问题可能是什么,不过这里有一些建议:

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


只是从评论中移动一些东西。。。通过UDP实现可靠的协议是一件棘手的事情,但是一个好的起点是假设您的代码被破坏,并按照上面的步骤进行调查…

嗯,如果没有协议的详细信息,很难判断问题可能出在哪里,不过这里有一些建议:

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


只是从评论中移动一些东西。。。通过UDP实现可靠的协议是一件棘手的事情,但是一个好的起点是假设您的代码已被破坏,并按照上面的步骤进行调查…

在本问答论坛上不鼓励使用脱机帮助,因为它旨在使所有访问者受益,而不仅仅是询问问题的人。如果你能将问题提炼成一个展示问题的小样本程序,你就更有可能得到帮助。这样做,你甚至可能会自己发现错误。马塞洛的意思是,这个网站不是一个论坛。@Cody:我指的是经典字典意义上的论坛。@伙计,你当然可以做比不能发送文件更好的报告!e、 g:你们收到数据包了吗?netstat显示了什么?也许你只是在听环回。。。另外,做一些tcpdump/wireshark来了解网络层的情况。在这个问答论坛上,离线帮助是不被鼓励的,因为它的目的是让所有访问者受益,而不仅仅是问问题的人。如果你能将问题提炼成一个展示问题的小样本程序,你就更有可能得到帮助。在这样做的过程中,你甚至可能会自己发现这个bug。马塞洛的意思是,这个网站不是一个论坛。@Cody:
我指的是经典字典意义上的论坛。@伙计,你肯定能做比不能发送文件更好的报道!e、 g:你们收到数据包了吗?netstat显示了什么?也许你只是在听环回。。。另外,做一些tcpdump/wireshark来看看网络层面上发生了什么鉴于协议是通过UDP实现的,还有很多可以说的。@Marcelo,当然,但我不想整天坐在这里写关于通过UDP实现可靠协议的困难。对于这些类型的问题,一个好的起点是假设您的代码被破坏,并首先进行调查。同意,类似于您对我的评论的回应将是一个比,不能再多说的更好的开场白……鉴于协议是通过UDP实现的,还有很多话要说。@Marcelo,当然,但我不想整天坐在这里写关于通过UDP实现可靠协议的困难。对于这些类型的问题,一个很好的起点是假设您的代码被破坏,并首先进行调查。同意,类似于您对我的评论的回应将是一个比,不能说更多更好的开场白。。。