繁体   English   中英

改进从客户端获取服务器IP地址的方式

[英]Improving the way I get server's ip address from the client

MulticastSocket multicast_socket = new MulticastSocket(Dialogos.MULTICAST_PORTA);
InetAddress group = InetAddress.getByName(Dialogos.MULTICAST_IP_GRUPO);
multicast_socket.joinGroup(group);
byte[] msg = new byte[1024];
DatagramPacket packet = new DatagramPacket(msg, msg.length);
multicast_socket.receive(packet);

在上面的代码中,服务器通过多播从客户端接收请求。 服务器现在应该让客户端知道“它在哪里”。 这只是客户端猜测连接位置的一种方法,它并不完全依赖于它。

服务器可以安装在许多不同的环境中,因此我不知道将使用哪个接口/地址与客户端通信。 因此,为了告诉客户端它在哪里,我正在编译服务器中的所有可用IP地址并将它们全部发送回多播,以便客户端可以尝试它们直到成功。

我的问题:有没有办法改善这种机制? 我想知道,在服务器应用程序上,我是否可以获得从客户端收到多播的本地IP,然后我知道要发回哪一个。 但是找不到那样做的方法。 也许某种方式尝试连接到客户端只是为了知道它会选择哪个本地地址?

只需将单播UDP数据包发送回客户端,客户端就可以提取源IP地址。 这将确保它是客户端和服务器可以相互通信的接口/路由上的地址。 当然,您将需要该数据包以某种方式告诉侦听端口号。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM