问题描述
我正在一个项目中,我可以使用连接到Windows应用程序的Android手机控制计算机。它包含三个主要部分:
- UDP广播以发现本地网络中的所有获胜应用程序。
- TCP连接以从android应用发送命令以赢得应用
- 关闭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; }
}
}
现在有两个问题:
- 当我将应用程序连接到
LAN A
中的计算机和LAN B
中的另一台计算机时,计算机的本地IP很小的机会是相等的(例如192.168.178.31
) 。这将为一个IP生成两个有效的会话ID。但是,当然,LAN A
中的计算机将不接受两个会话ID,但是看起来就像在看表一样。除非在建立连接时尝试使用每个现有的会话ID,否则都会导致连接问题。必须有一种更好的方法,例如添加网络标识符。这可能吗? - 在
LAN A
中将手机与笔记本电脑相连时,您将两者都带到LAN B
,则本地IP将会更改。因此,在创建新会话之前,您将无法连接到计算机。您可以通过发送包含会话ID的广播来解决此问题,但是可能会有两台计算机将此会话ID作为有效会话ID的情况。另外,在非常罕见的情况下,您在LAN B中,另一台计算机具有相同的IP,并且您的会话ID为有效ID。这将导致连接到错误的计算机。
您知道如何处理这两个问题吗?
编辑:不同的LAN相同的IP解释问题
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)