我写信给你是因为我需要解决一个新问题,而我现在已经把头撞在墙上太久了。
基本上,我需要创建一个可以处理以下内容的应用程序:
用户启动一个应用程序,该应用程序向子网发送广播,并收到那里所有服务器的响应及其 IP(以及一些附加信息)。然后用户可以选择他想要连接的服务器。
让它工作很简单,识别子网,使用 UDP 广播,然后让不同的服务器应用程序接收它并发送回响应。问题在于这些限制,我需要考虑:
- 网络中的服务器机器上很可能还有客户端,这意味着我们可以假设应用程序存在于所有机器上。每台机器都需要运行监听器,每台机器都可以启动 GUI 来选择服务器。
- 我只被允许向防火墙添加一个例外 - 一个处理发送广播、接收广播、发送答案和接收答案的例外。
- 我也应该只添加一个 Windows 服务
- 在服务器机器上,侦听器应该作为 Windows 服务运行,因此用户不会注意到它。用户也不会注意到响应被发送回客户端。
- 在客户端机器上,用户可以启动一个应用程序,该应用程序将通知应用程序发出广播,并获得所有服务器响应,因此用户可以选择一个连接。
- 除了用户为了选择服务器而启动的应用程序之外,不应该与用户进行任何交互。甚至没有弹出窗口,要求用户允许流量通过防火墙 - 它应该都是自动的
- 它需要在 Win XP、Win Vista 和 Win 7 之间运行。
不知道是不是对自己施加了太多的约束,但我真的希望自己能带着这些要求去申请。
我有一些想法 - 我只需要弄清楚如何去做:
- 我应该把所有东西都放在一个应用程序中,然后添加到防火墙例外列表中,这样它就可以处理服务器和客户端机器上的流量了吗?
- 我是否应该向防火墙添加自定义例外,允许特定端口上的 UDP 流量,然后让所有流量通过该端口?
- 是否有第三种更好的选择来管理它?
- 可以在客户端和服务器机器上运行该服务。但它可以为我处理所有事情吗——比如它同时处理广播发送/接收和应答发送/接收?有没有办法从服务中提取有关网络上服务器的信息?
我知道这很多,但我真的希望你能帮助我。
如果我不够清楚,或者您需要进一步的解释,请告诉我。
我正在使用 C# .Net 进行编码,我可以利用 .Net 框架中的所有内容。一旦我实现了这个功能
一切顺利
/萨吉