微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

如何解决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 举报,一经查实,本站将立刻删除。