【问题标题】:Can't access device through network无法通过网络访问设备
【发布时间】:2018-02-09 16:15:54
【问题描述】:

我正在尝试将设备与 python 连接。 该设备连接到同一网络(大学网络)中的另一台机器,我知道它的端口号。

我可以使用以下代码从插入设备的 PC 访问设备:

dev = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
dev.connect(('137.195.53.140',51019))

其中 '137.195.53.140' 是 PC ip,51019 是端口号。

但是,如果我在另一台机器上尝试相同的操作,ipython 在命令“dev.connect(('137.195.53.140',51019))”处获取堆栈,当我中止评估然后查看“dev”时我明白了:

<socket.socket fd=15, family=AddressFamily.AF_INET, type=SocketKind.SOCK_STREAM, proto=0, laddr=('137.195.204.85', 50393)>

“137.195.204.85”是我正在使用的机器的 IP,端口号我不知道。

由于 ssh 在此网络中运行没有问题,我认为我访问设备的方法也可以正常工作。

有人对此有任何线索吗?如果我不清楚,我很抱歉,但我对网络一无所知(也不太了解 Python)。

【问题讨论】:

    标签: networking


    【解决方案1】:

    有几点需要考虑:

    • 您的大学网络端口
    • 您的设备打开的端口

    您的网络可能阻止了51019 端口。此外,ssh 使用端口 22 进行连接。每个端口都是一个世界,所以有可能仅仅因为 22 开放,并不意味着另一个开放。学校网络通常有一个非常严格的政策来关闭端口以确保安全并阻止不需要的站点。

    您可以通过 ping 来测试您的设备访问权限

    $ ping 137.195.204.85

    如果可行,那么您可以尝试不同的端口

    【讨论】:

    • 谢谢!我从未连接到设备的机器上进行了这两项测试:ping 137.195.204.85(未连接到设备的机器的 IP)输出:PING 137.195.204.85(137.195.204.85):56 个数据字节来自 137.195.204.85 的 64 个字节: icmp_seq=0 ttl=64 time=0.071 ms 64 bytes from 137.195.204.85: icmp_seq=1 ttl=64 time=0.079 ms ... ping 137.195.53.140(插入设备的机器的 IP) 输出:PING 137.195。 53.140 (137.195.53.140): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 无论如何,有没有选择合适端口的标准?
    • 通常系统会保留2000以下(左右)的端口。尝试使用超过 3000 的端口号,你会没事的。做一个测试:在你的设备上,作为一个 linux,打开一个术语并运行nc -l 3005,然后从你的电脑尝试用telnet 137.195.53.140 3005 向它发送一些东西,然后在那里写任何东西。它应该打印在您的设备上。如果没有,则没有连接。
    • 我会尝试一些超过 300 万的端口,谢谢!不幸的是,我无法运行您提出的测试,因为该设备不是“计算机”,但它是一种科学设备,带有连接到 Windows 机器的专有软件,我正在尝试从 linux 机器访问该设备在 Windows 机器的同一个网络中(解释起来有点复杂:D)
    猜你喜欢
    • 1970-01-01
    • 2013-04-03
    • 2015-03-21
    • 2020-02-29
    • 1970-01-01
    • 2011-12-11
    • 2023-03-20
    • 2023-03-24
    • 2015-02-14
    相关资源
    最近更新 更多