Don*_*nic 10 android serversocket server
我正在尝试开发一个Android(服务器)应用程序,该应用程序将直接 从Internet 接受TCP连接。几年前,我没有任何尝试。这有可能吗?
那时,我在StackOverflow和其他地方以不同的方式提出了这个问题,但从未得到满意的答案。答案分为两类:
不,您不能
给出最权威的答案:大多数运营商不会将连接请求路由到移动设备。
是的,您可以。
这些答案没有提供帮助的详细信息或示例。
我尝试过的
我可以通过各种方式成功获取移动设备的外部IP。但这只是难题的一部分。请参阅下面的注释1。
我创建了一个侦听端口(例如2000)的ServerSocket。但是该应用程序不接受此套接字上来自Internet的连接。显然,此套接字正在设备的本地(内部)网络(即192.168.1.0)上侦听。
我能够通过设备上的其他应用程序(位于同一子网中)进行连接。
我还可以通过商店中的NAT路由器进行连接,该路由器将Internet地址转换为设备的本地网络。但这对现场(没有可用的路由器)没有帮助。请参阅下面的注释2。
我曾尝试向AT&T客户支持型人员咨询,但我认为他们不理解我的问题。
笔记:
我当前的理论(9/23/19)
我目前的谦虚信念是,这里有一个类似NAT的实体在起作用。要么:
无论哪种情况,根据这种理论,入站 TCP连接都不会转发到设备的本地网络,但是出站连接可以正常通过。
摘要
也许答案仍然是一样的,但是我想我会再问一遍,以防万一情况发生了变化或如今人们有了更好的见解,
(2019 年 9 月 26 日更新)
我发布这个“答案”本身并不是一个答案,而是为了征求建设性的批评和/或肯定。我在下面所做的任何陈述绝对应该隐含地加上“我谦虚地相信......”前缀。
昨天,我有了一个个人的顿悟。我终于通过我厚厚的脑袋明白了一些回应者所说的话。下面我提出我的新认识。
迄今为止,我认为 AT&T 的移动数据网络只是通过蜂窝基站和干线实现的互联网的直接延伸。现在我意识到这是一个封闭的、私有的数据传输机制。由于它是 AT&T 所有,他们可以实施他们选择的任何协议,包括从他们的头端到我注册的手机的“私人”数据连接。这些连接类似于典型桌面 NAT 路由器上的 LAN 侧端口。头端(即它们的 NAT 路由器)是唯一可以从 Internet 访问的实体。
互联网和我的手机之间的头端连接是通过这些AT&T 专用连接进行的。我的设备(以及我相信附近的设备)报告的“公共 IP”实际上指向 AT&T 头端,在我的例子中是 150 英里外的迈阿密)。头端将出站连接从我的手机转发到互联网,但不转发入站连接请求。
关于我的“公共IP”
我认为这是不存在的,事实上,这是一个毫无意义的概念。如果您无法连接到这样的地址,那么它还有什么意义呢?
概括
我现在相信我最初问题的答案是“不可能,何塞”。这不是由于寻址问题,而是 AT&T 不会将传入连接路由到设备。他们也不通过其专用网络为设备提供静态 IP(鉴于上述情况,这无论如何都没有多大意义)。
如果本原始答案中的任何陈述不正确,请让我知道哪一项以及为什么不正确
归档时间: |
|
查看次数: |
237 次 |
最近记录: |