2012-06-30 33 views
0

我目前正在使用TCP/IP連接構建應用程序,並且應用程序通過查詢來自mysql數據庫的IP地址在服務器和客戶端之間建立連接。但是,讓我們說,有如何區分用於構建套接字連接的設備

人A和B連接到網絡NET_A(220.241.XXX.XXX)

人C和d連接到網絡NET_B(221.221.xxx.xxx)

如果我想要使用某種IP地址連接A和D並將B和C連接到彼此,那麼應該使用什麼樣的IP地址或方法才能讓這些人成功連接到彼此?我一直在使用本地IPv4地址成功連接A和B在網絡NET_A使用下面的代碼來實現:

InetAddress thisIp =InetAddress.getLocalHost(); 
System.out.println("IP:"+thisIp.getHostAddress()); 

而且下面的ServerSocket代碼:

ServerSocket ss = new ServerSocket(PORT); 
    ss.setSoTimeout(10000); 
    connection = ss.accept(); 

遵循的是客戶端套接字代碼:

connection = new Socket(InetAddress.getByName(SERVER_IP), PORT); 
+1

你需要的不是'某種IP地址',而是兩個網絡之間的功能*路由*。它甚至可能涉及安裝一些硬件。 – EJP

+0

另外值得一提的是,這些IP地址不在私人範圍內。私有範圍是'10.0.0.0/8(255.0.0.0)','172.16.0.0/12(255.240.0.0)'和'192.168.0.0/16(255.255.0.0)'。 –

+0

無論如何你爲什麼要這樣做?這似乎很奇怪。 –

回答

0

您需要在兩個網絡中都設置一個IP地址的路由器,併爲所有主機添加一條路由,告訴他們遠程網絡和路由器(網關)的IP地址。

您可以通過啓用數據包轉發來設置一臺linux機器來輕鬆完成此操作。只需將net.ipv4.ip_forward = 1添加到/etc/sysctl.conf並運行sudo sysctl -p

作爲套接字編程器的路由通常不是您需要關心的事情,它是爲您完成的。

相關問題