簡體   English   中英

套接字服務器和套接字客戶端Java-從位於不同計算機上的客戶端檢測服務器

[英]Socket server and socket client java - detecting server from client located on different computers

因此,當前我正在通過IP地址連接到服務器端,但我希望它不必指定服務器計算機的IP地址。 無論如何,我只能檢測到當前的服務器插槽已在網絡上打開並從客戶端連接到該服務器?

這是我為服務器寫的:

server = new ServerSocket(1234,100);

在客戶端:

connection = new Socket(InetAddress.getByName("someIpAddress"),1234);

如果服務器始終位於同一網絡上,則始終可以使用UDP廣播來檢測服務。

服務器偵聽廣播,然后進行回復,從而發送其IP地址。

如果服務器和客戶端位於不同的網絡上,並且它們之間至少有一個路由器,則無法從客戶端“檢測”服務器。

我希望它不必指定服務器計算機的IP地址。 無論如何,我只能檢測到當前的服務器插槽已在網絡上打開並從客戶端連接到該服務器?

下面討論兩個方面:

  1. 如果您不知道給定網絡中的服務器,那么檢測服務器套接字是否在已知端口上運行是一項非常繁瑣的任務。 Java SE沒有能力自動確定(網絡中的)哪個系統具有偵聽X端口的服務器套接字。 您需要第三方工具來實現相同目的。 您可以采用基於嘗試的嘗試來確定這一點。

  2. 另一點,如果您知道服務器的主機名(如代碼中的“ someIpAddress.com”),那么在這種情況下,它全部歸結為一個主機名解析器,該解析器將從傳遞的主機名中獲取IP地址。

    您可以在客戶機的/ etc / hosts文件中具有有關服務器主機名和IP的映射。 或者,您也可以擁有一個DNS服務器,該服務器會將您的請求重定向到IP,並讓您連接到偵聽X端口的服務器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM