当前位置:C++技术网 > 资讯 > udp数据报无法发送到服务器上的udp服务端的解决办法

udp数据报无法发送到服务器上的udp服务端的解决办法

更新时间:2016-03-12 23:49:40浏览次数:1+次

    最近在学习socket编程,然后想测试一下udp通信。在本机和局域网里测试都成功了,然后想将udp服务器端放在真正的服务器上运行,udp客户端放在个人电脑,然后让客户端连接服务器端。结果服务器端总是没有反应,让人很着急。
    查看服务器的监控软件,发现收到大量的udp数据报,但是udp服务端程序却始终没有动静。我就怀疑是监控软件拦截了,但是仔细查看监控软件,也没有发现拦截的痕迹。
    那么也只有服务器上的防火墙拦截了。因为监控软件确实显示收到了大量的udp数据报。为了确认服务器确实收到了udp数据报,我将在循环中不停的发送udp数据报,然后在服务器监控软件看到流量达到了8mbps了,然后关闭udp客户端,流量消失了。这就证明了,udp真的到达服务器了。
    那么问题不是监控软件的拦截,就去看看防火墙了。因为不熟悉防火墙,所以也不知道怎么下手。依稀记得好像可以设置防火墙的进入和出去的程序。
    那么简单的解决办法就是关闭防火墙。当然,如果服务器用作他用,就不能随意关闭防火墙了。那么我们就对udp服务端的程序进行设置,让udp服务端程序的所有端口都放行。
    下面演示设置防火墙放行udp服务端程序:

1.打开防火墙,找到“允许程序或功能通过Windows防火墙”,点击进去,如下图所示:

允许程序或功能通过Windows防火墙

【允许程序或功能通过Windows防火墙】

2.在弹出的界面中,找到“允许运行另一程序”来添加允许通过防火墙的程序,这里就是我们的udp服务端程序了。

防火墙允许运行另一程序

【防火墙允许运行另一程序】

3.在弹出的对话框中程序列表中,一般没有我们自己的程序。如果你的程序是安装过的,一般在程序列表中有。而单个exe运行的绿色程序,是不会出现在列表中的。所以,我们点击“浏览”来找到并选择我们的idp服务端程序。然后udp服务端程序出现在程序列表中,选择这个程序,然后点击“添加”即可。这样设置之后,就可以了。

浏览选择要通过防火墙的程序

【浏览选择要通过防火墙的程序】

将选择的程序添加到防火墙允许通过的程序列表中

【将选择的程序添加到防火墙允许通过的程序列表中】
    然后你在用客户端连接服务器上的udp服务端程序,就发现可以收到udp数据报了。