我在solaris主机中有两个接口。我想通过两个接口启动两个到单个TCP服务器的TCP连接,如图所示。 Java中是否有任何选项将接口绑定到TCP套接字以覆盖本地路由表?在java TCP连接中绑定一个接口
我附上了网络图,
我想用两个串行链路的带宽从服务器获取数据。因此我想在这两个接口上启动连接。
感谢,
我在solaris主机中有两个接口。我想通过两个接口启动两个到单个TCP服务器的TCP连接,如图所示。 Java中是否有任何选项将接口绑定到TCP套接字以覆盖本地路由表?在java TCP连接中绑定一个接口
我附上了网络图,
我想用两个串行链路的带宽从服务器获取数据。因此我想在这两个接口上启动连接。
感谢,
您可以使用
Socket s = new Socket(hostname, port, localInterface, 0);
然而,许多操作系统不孝敬这个“提示”,将反正使用的路由表。
好的,所以,基本上它就像“注册”关键字。 O可以自由地将套接字与该接口绑定或绑定到默认接口。如果它绑定到不同的接口,那么我的应用程序将无法工作。 SocketChannel中是否有可用的抽象? – Mohan 2012-07-13 13:22:43
我在linux中读了类似“SO_BINDTODEVICE”的内容。但是java中的socketchanneloptions类没有“SO_BINDTODEVICE”。 – Mohan 2012-07-13 13:27:27
http://en.wikipedia.org/wiki/Host_model Linux通常是弱托管的,并且将忽略您将Socket绑定到哪个接口。 – 2012-07-13 13:47:28
你的意思是这样的:
Socket socket1 = new Socket();
socket1.bind(new InetSocketAddress("10.1.1.1", port));
socket1.connect(new InetSocketAddress("10.1.3.1", port));
Socket socket2 = new Socket();
socket2.bind(new InetSocketAddress("10.1.2.1", port));
socket2.connect(new InetSocketAddress("10.1.3.1", port);
不幸的是,我能不能在这里附上网络图。我的主要问题是我有两个串行链路连接到两个路由器。两台路由器分别连接到我的主机。我想通过两个接口启动两个不同的连接。 – Mohan 2012-07-13 12:27:54
将它上传到其他地方并链接,没有你的图表,这很难给出正确的答案。 – 2012-07-13 12:29:26
链接到图片 - http://uploadpic.org/v.php?img=vSckl9f6Ze – Mohan 2012-07-13 12:32:05