簡體   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