我在服务器上安装了多个NIC(网络接口)。我是否可以在JAVA中为现有客户端套接字设置默认本地绑定地址?
可以通过以下方法以编程方式执行此操作:
new Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
问题是我无法访问SocketFactory,所以我无法指定localAddr值。
答案 0 :(得分:1)
您在问题中提到的抽象SocketFactory.createSocket()
方法的文档,指向提供您所需内容的构造函数;
public Socket.Socket(InetAddress address,
int port,
InetAddress localAddr,
int localPort)
throws IOException
如果需要更改现有套接字的localAddress,则应使用bind(SocketAddress bindpoint)
方法,但如果套接字已绑定,则会抛出IOException
。
您应该将InetSocketAddress
传递给该方法,因为SocketAddress
是抽象的。
如果您无法找到每个接口的内部IP地址this指南,请说明如何检索它们的集合。