我可以使用python的“socket”模块连接到无线以太网主机吗?

问题描述 投票:0回答:1

我的目标是通过 WLAN 远程控制设备。该设备具有使我能够配置该无线网络(IP、掩码、网关、DNS)的软件。我可以成功地将这个设备和我的计算机连接到公共网络。由于两台机器共享相同的网络,我假设我能够在它们之间打开一个套接字。知道我尝试远程控制的设备的 IP 和端口后,我使用了以下代码,但收到超时:

import socket
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect(('192.168.xxx.xxx', XXXX))

(我在 mac OS 10.11.6 上使用 python 2.7) 我连接到的网络与我分配给设备的 IP 位于不同的子网中。我也尝试过将 IP 与我的网络位于同一子网中。可能有很多事情阻止我打开套接字。那并不是我真正想要的。我的问题的核心是我是否可以使用 python 的“socket”模块无线连接到设备。

python sockets wifi ethernet
1个回答
1
投票

是的,你可以。

因此,当您尝试连接到无线设备时,会出现超时。您可以采取几个步骤来解决此问题。

确保您的设备正在运行正在侦听您要连接的端口的程序。确定设备是否可以一般应答 ICMP 数据包,特别是是否可以 ping 通。尝试对设备执行 ping 操作。如果 ping 成功,则意味着已建立基本连接,并且问题出在 OSI 堆栈中的较高位置。

- 我可以 ping 设备 - 太好了,这意味着问题出在 TCP 或 TCP/IP 堆栈的应用层中的某个位置。确保计算机、设备和中间网络设备允许与特定主机和端口的 TCP 连接。然后继续您的应用程序和设备软件。在问题中添加一些代码,发布您得到的堆栈跟踪或询问另一个问题。

- 我无法 ping 通设备 - 太好了。设备之间没有连接,您需要找出原因。

I) 画出网络图。计算机和设备之间放置了多少个中间网络设备?它们是什么,路由器,交换机? (以防万一,家用级 WiFi 调制解调器是路由器。)了解 IP 数据报应如何在网络上传输。

II) 你说该设备可以用来配置IP网络。至少出于故障排除的目的,我会忽略此选项并依赖静态 IP 或路由器的 DHCP 服务器。使用现有的 DHCP 将确保没有 IP 错误配置。

III) 查看您拥有的所有设备的路由表。他们有合适的默认网关吗?路由器是否知道如何将数据包传递到设备。如果计算机和设备位于同一子网但连接到不同的网络接口,您可能会遇到麻烦。如果需要,将网络分成两个子网,并在路由器上在它们之间设置静态路由。

您还可以使用wireshark来查看您发送的数据是否离开计算机或被某些讨厌的防火墙丢弃。

让 LAN 正常工作有很多注意事项。如果这些简单的步骤对您没有帮助或者您在执行这些步骤时遇到重大困难,您可能需要在networking.stackexchange 上提问。或者只是在这里发表评论,我很乐意提供帮助。

© www.soinside.com 2019 - 2024. All rights reserved.