0

我正在开发一个基于 LAN 的数据库应用程序。它涉及一个中央“服务器”应用程序来容纳数据库,以及许多访问它的“客户端”应用程序。

“服务器”将是一个简单的基于 C# 的 HTTP 服务器,它响应 GET 和 POST 请求。但是,由于它被设计为能够从网络上的任何笔记本电脑上运行,我想知道如何在不知道 IP 地址的情况下建立客户端和服务器之间的连接。

我想我可以 ping 从 192.168.0.0 到 192.168.0.255 的每个 IP 地址,然后测试那些响应的地址,看看是否有我的服务器。但只有在没有更好的方法的情况下,我才会这样做。有什么建议么?

4

2 回答 2

1

许多这些类型的发现服务通过在子网广播地址(对于 192.168.0.0/24 它将是 192.168.0.255)上放置某种信标或通过在多播地址上放置信标来运行。

多播特别有趣,因为在正确配置的网络中,它允许主机甚至跨子网找到服务。路由器和交换机通常不会跨子网边界转发广播数据包,但多播数据包会。

信标中将包含信息,例如运行服务的端口、服务类型、开始使用服务所需的任何信息。

于 2012-04-06T01:10:13.547 回答
1

为了让你朝着正确的方向前进,你应该做的是让数据库服务器在指定的端口上运行。然后从客户端(需要连接到数据库的系统)向该端口发送广播。当数据库服务器收到此消息时,它将能够响应发送者,允许发生握手。

当然,您需要验证数据库服务器的真实性(以确保其安全,除非您对此不担心)。这可以简单到让客户端显示 4 个数字,然后需要将这些数字输入数据库,以便数据库可以将 4 个数字发送回客户端,证明它是正确的计算机(iTunes 遥控器如何工作),或者您可以使用证书(但这对我来说太复杂了,无法正确涵盖)。

之后,两台计算机将知道彼此的 IP,然后您就设置好了!

于 2012-04-06T01:10:51.030 回答