Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sockets/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
两个客户端之间的Java套接字本地连接-设计_Java_Sockets - Fatal编程技术网

两个客户端之间的Java套接字本地连接-设计

两个客户端之间的Java套接字本地连接-设计,java,sockets,Java,Sockets,我有一个应用程序,其中用户(客户端1)输入一个本地ip和一个端口,应用程序向客户端2(也在使用同一个应用程序)发送一张图片。但是对于最终的应用程序,我不希望用户输入本地ip,因为他们不知道这些信息,我希望我的程序能够自动解决这个问题 我的第一个想法是: 最初,我以为我可以扫描所有的本地ip以获得一个开放的端口,但这会花费太长的时间 我的第二个想法: 我的下一个想法是让客户端将其本地主机名发送到远程服务器,然后远程服务器交换主机名并将其发送回客户端 但是,我不想为我的第二个想法运行专用服务器 因为

我有一个应用程序,其中用户(客户端1)输入一个本地ip和一个端口,应用程序向客户端2(也在使用同一个应用程序)发送一张图片。但是对于最终的应用程序,我不希望用户输入本地ip,因为他们不知道这些信息,我希望我的程序能够自动解决这个问题

我的第一个想法是: 最初,我以为我可以扫描所有的本地ip以获得一个开放的端口,但这会花费太长的时间

我的第二个想法: 我的下一个想法是让客户端将其本地主机名发送到远程服务器,然后远程服务器交换主机名并将其发送回客户端

但是,我不想为我的第二个想法运行专用服务器

因为这更多的是一个设计问题,我不包括任何代码,但如果必要的话,我会这样做

你们对我应该如何设计我的应用程序来自动计算本地IP有什么想法吗

我确实试着用谷歌搜索这个问题,但找不到解决办法,所以一个小时后我放弃了,只是把我的问题放在这里。如果这是一个重复,那么我很抱歉,请删除这个问题

谢谢,
Bucco

您可以使用类似(允许基于多播[lan]等的发现)或一些实现,尽管后者至少需要一些服务器进行初始发现


原则上,这是一种工作方式,即客户使用某个众所周知的地址向“世界”发送消息,然后等待某人回答。每个客户机本身同时等待这样的消息,并用如何“连接”到当前客户机的信息对其进行回复。这可以通过所谓的黑板来实现,其中bb要么是多播消息的特殊tcp地址(os/tcp将消息发送给同时侦听的所有客户端),要么是一个或多个服务器(种子),它们接收并协调请求和“成员”列表。无论如何,有一些工具;)

因此,为了做到这一点,客户必须将一些信息发送到某个已知的地址?抱歉,我有点困惑:)如果我这样做,它会不会遵循我的第二个想法,将信息发送到专用服务器?请注意,是否有一种快速方法可以扫描网络上打开的端口?我认为UDP比TCP快,因此我的应用程序可能只能为扫描打开UDP端口(部分;)如果地址是某个多播地址(),则不需要专用服务器-至少在本地网络中不需要。有关这方面的更多信息,请参见上面的jgroups链接。对于更广泛的网络,一个或多个已知的服务器(IP/端口)至少对于运行客户机的初始发现是好的。udp/tcp在这里是次要的。。