![](/img/trans.png)
[英]Is it possible to create a registry only on a specific loopback address in Java RMI?
[英]Java socket only use loopback
我嘗試使用 java 插座將我的筆記本電腦連接到另一台筆記本電腦(在同一網絡上,均使用 Windows 10)。
這是客戶端代碼:
Socket SocketServIAChat;
try
{
SocketServIAChat = new Socket("192.168.1.10", 50065);
}
catch (IOException ex)
{
jTextAreaErrorMessage.setText(ex.getMessage());
return;
}
和服務器代碼:
try
{
listeningSocket = new ServerSocket(50065);
listeningSocket.setSoTimeout(1500);
}
catch (IOException ex) {
Logger.getLogger(ThreadLoginRequests.class.getName()).log(Level.SEVERE, null, ex);}
...
Socket socketLogin = listeningSocket.accept();
但是由於某種原因,即使我指定了 ip 地址,筆記本電腦也只會在 looppack 中查找主機,而不是在專用網絡上查找主機。 這是證明:
我還在兩台筆記本電腦的防火牆中添加了一條規則,以接受在端口 50065 上傳入和傳出的 tcp。
那么有沒有一種方法可以參數化套接字以使用正確的網絡接口(使用專用網絡的接口)或者我在這里遺漏了什么?
首先,檢查您是否能夠從另一台筆記本電腦上 ping 通一台筆記本電腦。 如果是,請在下面嘗試。
Address 字段包含此偵聽套接字正在偵聽的基地址。 它包含 IP 地址和端口號。
如果您的偵聽套接字偵聽機器的所有 IP 地址,則地址的 IP 部分為 0.0.0.0。
嘗試在本地 IP 或使用“0.0.0.0”的任何地址上綁定
InetAddress addr = InetAddress.getByName("0.0.0.0");// Based on your requirement you can use local address also "192.168.1.10"
try
{
listeningSocket = new ServerSocket(50065, 50, addr);
listeningSocket.setSoTimeout(1500);
}
catch (IOException ex) {
Logger.getLogger(ThreadLoginRequests.class.getName()).log(Level.SEVERE, null, ex);}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.