我有一个应用程序,其中用户(客户端#1)进入本地IP和端口,应用程序将图片发送到客户端#2(谁也使用相同的应用程序)。但是对于最终的应用程序,我不希望用户输入本地ip,因为他们不会知道这些信息,我希望我的程序自动解决这个问题。
我的第一个想法: 最初,我认为我可以扫描所有本地IP的开放端口,但这将花费太长时间。
我的第二个想法: 我的下一个想法是让客户端将他们的本地主机名发送到远程服务器,然后交换它们并将它们发送回客户端。
但是,我不想为我的第二个想法运行专用服务器。
因为这更像是一个设计问题,所以我不会包含任何代码,但如有必要,我会这样做。
你们对我应该如何设计我的应用程序以自动找出本地ips有任何想法吗?
我确实尝试谷歌这个,但无法找到解决方案,所以我放弃了一个小时后,只是把我的问题放在这里。如果这是重复,那么我很抱歉,请删除这个问题。
谢谢, 颊
答案 0 :(得分:1)
您可以使用类似jgroups(允许基于多播[lan]等的发现)或某些peer-to-peer实现的内容,尽管后者至少需要一些服务器进行初始发现。
原则上是有效的,即客户使用一些众所周知的地址向“世界”发送消息并等待某人回答。每个客户端本身都会同时等待这样的消息,并用信息回复它如何“连接”到当前客户端。这可以通过一个所谓的黑板来完成,其中这个bb是多播消息的特殊tcp地址(os / tcp将消息发送给所有同时监听的客户端)或者一个或多个服务器(种子)采取和协调请求和“成员资格”列表。无论如何,有一些工具;)