2008-12-03 110 views
0

我试图运行客户端服务器UDP程序。 我的两台机器都在不同的网络中。我在我的路由器中设置了端口转发。路由器后面的客户端服务器程序

我的服务器有两个IP地址: 1)External 200。?。?。? 2)内部192.168.0.100

在创建UDP服务器时,我需要创建绑定到地址的套接字。

我应该将套接字绑定到外部还是内部?

我试着用内部地址,但它没有从客户端获取任何数据。

建议...

回答

0

鉴于这一事实,你说你设置端口转发,你的UPD程序中指定适当的端口?或者你只是将数据发送到IP地址?如果指定了外部IP地址和端口号,则路由器上的端口转发应将其发送到网络上的相应节点。

+0

在客户端和服务器相同的端口号在端口转发是的,我已经设置端口15500 ... 在服务器,我创建recviever地址 recvAddr.sin_addr.s_addr = htonl(INADDR_ANY); 我应该给INADDR_ANY还是外部IP? – anand 2008-12-03 08:07:25

0

如果你必须绑定到一个特定的地址,那么它将是内部地址,绝对不是外部地址。

路由器上NAT的全部内容是隐藏你的外部世界的内部网络寻址方案。路由器的NAT算法将负责将任何入站数据包的目标IP地址重写为正确的内部IP地址。

这不起作用表明您的端口转发和/或路由器上的防火墙存在问题。除了转发规则之外,您还需要设置特定的防火墙规则以允许通信,这并不罕见。