2012-04-06 33 views
0

我正在开发一个基于局域网的数据库应用程序。它涉及一个中央“服务器”应用程序来存放数据库,以及许多访问它的“客户端”应用程序。基于局域网的应用程序 - 如何无静态IP连接?

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

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

+0

http://en.wikipedia.org/wiki/Broadcast_address – 2012-04-06 01:08:10

+0

您可以让服务自行公布,有关您的网络的更多详细信息将有助于回答此问题。什么分配IP地址?这是一个Windows域?你有本地DNS服务器吗? – Derrick 2012-04-06 01:09:28

+0

网络只是一个连接到几台PC和笔记本电脑的路由器。没有DNS服务器。 – user1032657 2012-04-06 02:28:52

回答

1

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

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

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

+0

谢谢 - 这让我有正确的答案。我正在尝试UDP广播,但正如你所建议的那样,它不能通过我的路由器。多播正是我需要做的事情:http://www.jarloo.com/c-udp-multicasting-tutorial/ – user1032657 2012-04-06 03:33:50

1

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

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

之后,两台电脑将知道对方的IP,并且你被设置!

相关问题