0
我遇到了一個很常見的問題,其中僅用於端口的綁定函數(即通配符綁定)實際上並不監聽Linux網絡別名(單個網卡上的附加地址) 。Java中的通配符綁定不綁定到網絡別名
這意味着向網卡的主IP地址發送請求確實可以正常工作,但是對其他IP的任何請求都會失敗。
有沒有人在過去遇到過這個?
我遇到了一個很常見的問題,其中僅用於端口的綁定函數(即通配符綁定)實際上並不監聽Linux網絡別名(單個網卡上的附加地址) 。Java中的通配符綁定不綁定到網絡別名
這意味着向網卡的主IP地址發送請求確實可以正常工作,但是對其他IP的任何請求都會失敗。
有沒有人在過去遇到過這個?
如果我這樣做:
sudo ip addr add 192.168.1.186/24 dev eth0
然後運行這個命令:
import java.net.*;
public class Bind {
public static void main(String... args) throws Exception {
ServerSocket ss = new ServerSocket(8888, 50, InetAddress.getByName("0.0.0.0"));
Socket s = ss.accept();
System.out.println("accepted socket " + s);
}
}
然後在另一個shell,這樣的:
telnet 192.168.1.186 8888
在第一殼體打印程序:
accepted socket Socket[addr=/192.168.1.186,port=33867,localport=8888]
如果我再說一遍,但使用我的'真實'地址,那也可以。
因此,它看起來像綁定到0.0.0.0綁定到所有地址,包括額外的添加到設備。
如果我更改ServerSocket構造函數調用以使用單參數形式,所有東西仍然如上所述,所以它看起來像是綁定到0.0.0.0。
這些'別名'是如何設置的? `ip addr add`,還是別的? – 2010-11-23 16:50:47
他們通過ifcfg-eth0:0等添加。 – SyBer 2010-11-25 20:02:13