使用 DNS 的简单 TCP 套接字连接中的数据丢失?

Data loss in simple TCP socket connection using DNS?

我有一个移动通信单元,它使用移动互联网 3G 与我的服务器通信。

场景 1:当我使用 IP 地址创建 TCP 套接字并通过它发送数据时,发送的数据 100% 在服务器上收到。

场景 2:当我用域名替换 IP 地址时,有时移动设备甚至无法建立连接,即使连接后有时服务器也从未接收到从移动设备发送的数据。

我想使用域名,因为它们会使设置更易于管理,我也尝试过使用确认来实现可靠性,但开销太大。

问题是我如何使用域名并保持我的数据完好无损,此外我会寻求一些解释,说明简单地将 IP 地址更改为域名会如何造成此类问题。

使用 IP 地址和主机名作为目标的区别在于,在第二种情况下,需要先使用 DNS 将名称解析为 IP 地址。在某些位置,DNS 查询不会 return 真实 IP 地址。这通常是 WLAN 热点中捕获门户的情况,但也可能是其他类型的流量拦截。因为您的应用程序然后连接到错误的 IP 地址,数据将不会到达您的服务器,而是到达其他主机。

..how can I use domain name and keep my data intact..

您可能需要向您的应用程序添加某种身份验证,以便您可以确保在发送任何敏感数据之前与正确的主机对话。这样你至少会注意到你连接到了错误的主机。