在java中为客户端套接字设置本地绑定地址

时间:2013-08-16 10:19:49

标签: java sockets network-programming

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

可以通过以下方法以编程方式执行此操作:

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

问题是我无法访问SocketFactory,所以我无法指定localAddr值。

1 个答案:

答案 0 :(得分:1)

您在问题中提到的抽象SocketFactory.createSocket()方法的文档,指向提供您所需内容的构造函数;

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

Docs found here


如果需要更改现有套接字的localAddress,则应使用bind(SocketAddress bindpoint)方法,但如果套接字已绑定,则会抛出IOException

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


如果您无法找到每个接口的内部IP地址this指南,请说明如何检索它们的集合。