c#如何区分来自不同网络的两个相等的专用IP地址?

问题描述

我正在一个项目中,我可以使用连接到Windows应用程序的Android手机控制计算机。它包含三个主要部分:

  1. UDP广播以发现本地网络中的所有获胜应用程序。
  2. TCP连接以从android应用发送命令以赢得应用
  3. 关闭Android应用程序或Win应用程序后记住设备并重建连接的会话

目前一切正常,但存在两个理论问题:

这是我的服务器表(每个客户端-android应用-都有一个包含与其连接的所有服务器的sqlite表)的样子:

using System.Net;

using sqlite;

namespace WRMC.API.DB {
    [Table("server")]
    public class Server {
        [Column("device")]
        [NotNull]
        public string DevicedisplayName { get; set; }

        [Column("ip")]
        [NotNull]
        public IPAddress IPAddress { get; set; }

        [Column("session")]
        [NotNull]
        public long SessionID { get; set; }
    }
}

现在有两个问题:

  1. 当我将应用程序连接到LAN A中的计算机和LAN B中的另一台计算机时,计算机的本地IP很小的机会是相等的(例如192.168.178.31) 。这将为一个IP生成两个有效的会话ID。但是,当然,LAN A中的计算机将不接受两个会话ID,但是看起来就像在看表一样。除非在建立连接时尝试使用每个现有的会话ID,否则都会导致连接问题。必须有一种更好的方法,例如添加网络标识符。这可能吗?
  2. LAN A中将手机与笔记本电脑相连时,您将两者都带到LAN B,则本地IP将会更改。因此,在创建新会话之前,您将无法连接到计算机。您可以通过发送包含会话ID的广播来解决此问题,但是可能会有两台计算机将此会话ID作为有效会话ID的情况。另外,在非常罕见的情况下,您在LAN B中,另一台计算机具有相同的IP,并且您的会话ID为有效ID。这将导致连接到错误的计算机。

您知道如何处理这两个问题吗?

编辑:不同的LAN相同的IP解释问题

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)