【问题标题】:Twisted Python connect via network switchTwisted Python 通过网络交换机连接
【发布时间】:2014-03-05 17:53:22
【问题描述】:

我有两台计算机(没有别的)直接插入网络交换机,我正试图让一台通过twisted.internet.reactor.connectTCP(addr, 8000, factory) 连接到另一台。 addr 我应该有什么?

在我尝试连接的计算机上(手工复制,因此可能存在拼写错误):

$ ifconfig
eth0      Link encap:Ethernet  HWaddr b8:27:eb:92:e3:cc
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:126 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:41328 (40.3 KiB)  TX bytes:3850 (3.7 KiB)

[snip]

感谢您的帮助!

【问题讨论】:

  • TCP 通过 IP 运行。您需要在主机上配置 IP(地址、路由等)。 Twisted 不会为您执行此操作。这可能不是一个stackoverflow问题。也许这是一个相关网站、超级用户或其他东西的问题。
  • 有趣的是这个接口已经收到了数据包。您问题的[snip]ed 部分中是否有桥接网络?

标签: python networking twisted


【解决方案1】:

这个问题并不是关于 Twisted,而是关于网络。 Twisted 的connectTCP 从您计算机上的某个 IP 地址连接到远程计算机上的某个 IP 地址。您通常不需要指定源地址,因为您的本地 TCP 堆栈会根据远程地址自动发现要使用的正确地址。但是,两台计算机都需要有可以相互路由的 IP 地址。

您从ifconfig 显示的输出表明您有一个以太网设备,但该设备没有关联的 IP 地址。您没有 IP 地址可以提供给 Twisted,因为您的网络没有为connectTCP(或其他甚至在 IP 层运行的软件,更不用说在connectTCP 所在的更高级别,即TCP) 工作。

您需要以某种方式为本地和远程设备上的该接口分配一个 IP 地址,如果它们只是直接插入没有 DHCP 服务器(或诸如 SLAAC 之类的其他机制)的网络交换机来给它们一个直接地址。您还需要设置网络掩码和其他所有内容,以便两台计算机可以相互路由。

我不会在此答案中告诉您如何执行此操作,因为它在很大程度上取决于您的网络配置和操作系统。但是,正如 Jean-Paul 在他的评论中所说,这将是 Super User 的一个很好的候选。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 2011-09-12
    • 2018-04-27
    • 2012-02-05
    • 1970-01-01
    • 2016-01-07
    • 1970-01-01
    相关资源
    最近更新 更多