【问题标题】:Multiple IP addresses on the same computer, initiated by one program, two NICs?同一台计算机上的多个 IP 地址,由一个程序启动,两个 NIC?
【发布时间】:2014-08-24 06:27:31
【问题描述】:

我有一个爬虫程序,它应该运行多个线程,每个线程都有不同的 IP 地址,大约同时运行 10 个线程。

是否可以在运行 Windows VII 的机器上为每个线程分配不同的 IP 地址?使用 Java 程序?

如果是这样,是否可以通过使用具有多个 NIC 的机器来实现?

我想在程序级别与这些不同的 IP 地址进行交互,这可行吗?

【问题讨论】:

  • 您应该能够为每个线程分配网络接口。每个网络接口应该有不同的 IP 地址。
  • 您好,您能解释一下吗?
  • 没什么意思。线程没有 IP 地址。套接字可以。 @rcs 需要澄清他的评论。
  • @EJP:我说的是具有 IP 地址的网络接口,而不是线程。该线程用于对网络接口进行操作。例如,我们可以声明一个从类 Thread 扩展的类,在这个类中我们有类Socket。你可能想看看docs.oracle.com/javase/7/docs/api/java/net/Socket.html。其中一个构造函数允许您指定要使用的网络接口的 IP 地址。 public Socket(InetAddress address, int port, InetAddress localAddr, int localPort)
  • @rfs 我知道 Socket 文档是怎么说的。自 1997 年以来我一直在阅读它。没有人知道您的评论是什么意思。你需要澄清它。你不需要光顾那些告诉你的人。有编程问题的是 OP,而不是我。

标签: java windows networking ip nic


【解决方案1】:

您可以通过以下方式获取可用的网卡:

Enumeration<NetworkInterface> nics = NetworkInterface.getNetworkInterfaces();

您可以使用他们的 InetAddresses 将您的线程绑定到特定的 nic。

【讨论】:

  • 我需要任何特殊的库或任何东西来做到这一点吗?
  • 您没有说明您使用哪种技术进行连接。
  • 可能是 URL、Socket、... 对于那些你不需要额外库的人。
  • 我是一名研究助理,他们让我看看这是否可能,也就是说……你说的连接是什么意思?比如'ssh'?
  • 你能告诉我一些示例程序/代码 sn-p 的方向吗?
【解决方案2】:
  • 如果您的程序直接使用 Socket,您可以枚举所有网络接口及其 IP 地址,并使用 bind() 或四参数 Socket 构造函数绑定到您喜欢的任何本地 IP 地址。

  • 如果您使用的是 URLConnection,我不知道您可以通过任何方式指定本地地址。

  • 我不能代表 HttpClient,但它有您可以查阅的文档。

  • 如果您使用其他东西,这个乏味的猜谜游戏将继续进行,直到您愿意进一步向我们倾诉它是什么。

【讨论】:

  • 哈哈-谢谢。我不是害羞!我只是不知道。我是一名研究助理,代表我的同事问这个问题!
  • 那么是什么阻止您向您的同事询问问题的答案?
  • 重要更新!
  • @user3787253 对谁至关重要?问题中没有关于 HTTP 的内容。这是您的问题,如果 HTTP 对您很重要,那么您应该一开始就这么说。
猜你喜欢
  • 1970-01-01
  • 2012-12-17
  • 1970-01-01
  • 1970-01-01
  • 2012-12-02
  • 1970-01-01
  • 2013-07-17
  • 2011-04-21
相关资源
最近更新 更多