我想做那样的事情:
public void myFun (String tIps [])
{
Socket s = new Socket ();
s.connect (new InetSocketAddress (serverIp, 80), 1000);
for (int i = 0 ; i < tIps.length ; ++i)
{
// Rebind the socket with another Ip
s.bind (new InetSocketAddress (tIps [i], 0));
/*
* use the socket
*/
}
s.close ()
}
但我收到此错误:“java.net.SocketException:已经绑定”。 我试图使用s.setReuseAddress(true),但它没有改变任何东西。 是否有任何解决方案可以避免为每个请求打开一个新套接字,这很长?
谢谢!
答案 0 :(得分:1)
这不是setReuseAddress
的用途。该函数对应于经典SO_REUSEADDR
,这与重新使用其他进程最近一直在监听的端口有关。
Java无法做你想做的事。
答案 1 :(得分:0)
这不是bind()
所针对的。套接字已经连接到目标:之后更改本地出站接口的重点是什么?
完全省略绑定步骤。路由表将确定用于连接目标的本地接口。