基于LAN的应用程序 - 如何连接没有静态IP?

时间:2012-04-06 00:59:56

标签: c# networking ip lan

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

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

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

之后,两台计算机将相互了解IP,并且您已经设置好了!