Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何区分用于构建套接字连接的设备_Java_Http_Sockets_Tcp_Ip - Fatal编程技术网

Java 如何区分用于构建套接字连接的设备

Java 如何区分用于构建套接字连接的设备,java,http,sockets,tcp,ip,Java,Http,Sockets,Tcp,Ip,我目前正在使用TCP/IP连接构建一个应用程序,应用程序通过从mysql数据库查询IP地址来建立服务器和客户端之间的连接。但假设有 连接到网络A(220.241.XXX.XXX)的人员A和B 及 连接到网络B的人C和D(221.221.xxx.xxx) 如果我希望A和D使用某种ip地址连接,B和C相互连接,那么我应该使用什么样的ip地址或方法,以便这些人能够成功地相互连接?我已使用本地IPv4地址成功连接网络A中的A和B,该地址是使用以下代码实现的: InetAddress thisIp =In

我目前正在使用TCP/IP连接构建一个应用程序,应用程序通过从mysql数据库查询IP地址来建立服务器和客户端之间的连接。但假设有

连接到网络A(220.241.XXX.XXX)的人员A和B

连接到网络B的人C和D(221.221.xxx.xxx)

如果我希望A和D使用某种ip地址连接,B和C相互连接,那么我应该使用什么样的ip地址或方法,以便这些人能够成功地相互连接?我已使用本地IPv4地址成功连接网络A中的A和B,该地址是使用以下代码实现的:

InetAddress thisIp =InetAddress.getLocalHost();
System.out.println("IP:"+thisIp.getHostAddress());
以下是服务器套接字代码:

   ServerSocket ss = new ServerSocket(PORT);
   ss.setSoTimeout(10000);
   connection = ss.accept();
以下是客户端套接字代码:

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

您需要在两个网络中设置一个具有IP的路由器,并向所有主机添加一条路由,告诉它们远程网络和路由器(网关)的IP地址

通过启用数据包转发,您可以设置一台linux机器来轻松完成这项工作。只需将
net.ipv4.ip_forward=1
添加到
/etc/sysctl.conf
并运行
sudo sysctl-p


由于socket程序员的路由通常不需要您关心,它是为您完成的。

您需要的不是“某种类型的IP地址”,而是两个网络之间的有效路由。它甚至可能需要安装一些硬件。另外值得一提的是,这些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)
。你为什么要这样做?这似乎很奇怪。