2013-08-16 39 views
1

我在服务器上安装了多个NIC(网络接口)。我可以为JAVA中的现有客户端套接字设置默认本地绑定地址吗?在java中为客户端套接字设置本地绑定地址

有可能通过该方法来做到这一点编程:

new Socket(InetAddress address, int port, InetAddress localAddr, int localPort) 

问题是,我没有访问的SocketFactory所以我不能指定localAddr值。

+0

为什么?当您连接套接字时,TCP会将其排序。你不必自己做IP路由。 – EJP

+0

您显示了用于设置本地地址的'Socket'构造函数,并且他们说您不能访问'SocketFactory'。 'SocketFactory'似乎不是该方法所必需的,那么你的问题在哪里? – Robadob

+0

@ user2689005我看到你正在使用一个库。当任何库向您返回一个连接的套接字或其他东西时,绑定它已经太迟了,因为它已经绑定了。我再问一次。你在这里试图解决的实际问题是什么? – EJP

回答

1

你在问题中提到的摘要SocketFactory.createSocket()方法的文档指向这个构造函数,它提供了你需要的东西;

public Socket.Socket(InetAddress address, 
    int port, 
    InetAddress localAddr, 
    int localPort) 
     throws IOException 

Docs found here


如果你需要改变你应该使用bind(SocketAddress bindpoint)方法的现有插座为localAddress,但是这将引发IOException如果已经绑定了套接字。

您应该将InetSocketAddress传递给该方法,因为SocketAddress是抽象的。


如果您无法找到您的每一个接口的内部IP地址this指南介绍了如何检索他们的集合。

相关问题