埃里克,你的问题似乎比简单得多已发出声音。
这个问题已经存在了十年,也许两年。这里不需要重新发明轮子。
为什么轮询/ ping命令是一个坏主意
由互联网服务供应商所提供的动态IP可以具有可变的租用时间,但通常是至少24-72小时。每隔1到1米对服务器进行一次屏蔽就会造成可怕的资源损失,这可能会在72小时内造成4320个无用的HTTP请求。每个请求会说约300字节* 4,320浪费的http请求等于1。3mb浪费带宽乘以100万客户端的目标客户端数量,您正在谈论的是一个每月浪费的带宽约为1.2 TB!这就是浪费的带宽,而不是运行应用程序所需的其他带宽,并提供有用的信息。
客户需要比经常ping的更聪明。相反,他们应该能够在启动时检查其IP地址是否与DNS匹配,然后只有在IP更改时才向服务器发送通知。这将减少数千倍的带宽和服务器处理需求。
你所描述的动态DNS
是什么,你所谈论的“动态DNS”(既为技术的描述性名称,也一个公司,提供SaaS解决方案的名称)。
动态DNS是一个非常简单的DNS服务器,可以让您快速更改名称和IP地址之间的映射。通常这对于使用仅提供动态IP的ISP的设备很有用。只要动态IP上的路由器/服务器的IP发生变化,它就会通知动态DNS服务器该变化。
- 动态DNS的实际标准协议已有详细记录。从这里开始:DNS Update API,我认为你正在寻找的细节在这里:DynDNS Perform Update。由于路由器硬件通常都有内置的DynDNS客户端,每个人都想使用,所以大多数商业实现都非常接近相同的协议。
- 大多数路由器(甚至便宜的)都已经内置了动态DNS客户端。 (您可以编写自己的软客户端,但路由器可能是最有效的位置,因为您的客户端可能使用私有IP进行NAT转换 - 您仍然可以这样做,但需要花费更多的带宽用于公共IP发现)
- 快速谷歌搜索“动态DNS Java客户端”带来了完整的源项目,像这样的:Java DynDNS client(未经测试,只是说明搜查的权力)
其他注意事项您的系统架构
可以说IP客户端映射的东西得到解决。你把它全部搞清楚了,它完美地工作,你总是知道每个客户端的IP。你会有一个很好的可靠系统,用于从移动设备向客户端传输文件吗?我会说不。
手机和家用电脑都可以有多种连接类型,Wi-Fi,蜂窝数据,也许有线数据。这些网络中的每一个都可能有不同的安全系统。因此,从蜂窝数据移动设备到家用路由器后面的WiFi笔记本电脑的连接将与连接到同一WiFi网络上的笔记本电脑的WiFi移动设备看起来非常不同。
您可能需要与物理路由器防火墙进行抗衡。此外,家用电脑可能会启用Windows防火墙,可能是诺顿互联网安全,可能是赛门铁克,也许AVG,也可能是防区警报等等。您是否知道所有这些潜在客户的防火墙考虑因素?
他们为什么需要将他们的IP地址发送到服务器? – 2012-03-31 11:37:35
因为我有移动设备连接到计算机,他们需要查询上述服务器的计算机IP地址。由于计算机无法建立与设备的连接,设备需要启动套接字连接 – Erik 2012-03-31 11:44:01
上述移动设备需要做什么? – 2012-03-31 11:45:21