【问题标题】:Socket programming WiFi issueSocket编程WiFi问题
【发布时间】:2012-03-22 23:23:01
【问题描述】:

我正在实现一个移动聊天应用程序,我正在使用套接字连接来实现 p2p 连接。我的聊天在安卓设备上运行良好。我的问题是我可以连接 3g 网络或同一个 WiFi 网络中的设备,但是当 WiFi 外部的设备尝试连接 WiFi 网络中的设备时,连接不起作用。我知道这是因为 WiFi 分配的设备的本地 IP。如何在 WiFi 中 root 和连接设备?

【问题讨论】:

    标签: android sockets ip wifi p2p


    【解决方案1】:

    听起来更像是路由器设置问题,而不是应用问题(这意味着您应用的用户也需要为自己的网络执行此操作)。

    您的 wifi 路由器需要知道如何将通信转发到您的设备。因此,假设您的应用程序正在连接端口 1234,那么您需要告诉路由器将来自外部的通信通过端口 1234 转发到您 wifi 网络中手机的内部 IP。

    网络外的电话应以您网络的外部 IP 和端口 1234 为目标。

    【讨论】:

      【解决方案2】:

      Sajan,您的问题不仅是 IP 映射问题,还是 NAT 穿越问题。在 NAT 中打孔并不总是可能的。如果是这样,则必须使用一些复杂的技术来完成,包括位于您的 wifi/lan 之外的超级对等点,它将从您的内部对等点读取转换后的地址。

      除非您使用 UDP 并且 NAT 是友好的,否则不可能将 TCP 通信直接发送到内部对等方。在大多数情况下,您必须检查 NAT 的可能性,如果有可能,您将需要执行映射预测并告诉两个对等方尝试在预测的 IP 地址上进行通信。

      如果您不希望您的用户必须配置他们的 NAT,这是有效的。即使在这种情况下,这样的配置也并不总是足够的(例如,如果有级联的 NAT 或代理)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-01-31
        • 2017-01-29
        • 2012-02-11
        • 2011-09-02
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多