我的目标是在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'模块以无线方式连接到设备。
答案 0 :(得分:0)
是的,你可以。
因此,当您尝试连接到无线设备时会出现超时。您可以采取几个步骤来解决此问题。
确保您的设备正在运行正在侦听您要连接的端口的程序。识别设备是否可以回答ICMP数据包,特别是可以进行ping操作。尝试ping设备。如果ping成功,则表示已建立基本连接,并且问题在OSI堆栈中更高。
- 我可以ping设备 - 很棒,这意味着问题出在TCP / IP堆栈的TCP或应用层中。确保计算机,设备和中间网络设备允许TCP连接到特定主机和端口。然后继续使用您的应用程序和设备软件。在问题中添加一些代码,发布您获得的堆栈跟踪或在SO上询问另一个代码。
- 我无法ping通设备 - 很棒。设备之间没有连接,您需要确定原因。
I)绘制网络图。计算机和设备之间放置了多少个中间网络设备?它们是什么,路由器,交换机? (以防万一,家庭级wifi调制解调器是路由器。)了解IP数据报应如何通过网络传输。
II)您说该设备可用于配置IP网络。至少为了排除故障,我会忽略此选项并依赖静态IP或路由器的DHCP服务器。使用现有的DHCP将确保没有IP配置错误。
III)查看您拥有的所有设备的路由表。他们有合适的默认网关吗?路由器是否知道如何将数据包传递给设备。如果计算机和设备位于同一子网但连接到不同的网络接口,则可能会遇到麻烦。如果需要,在两个子网中拆分网络,并在路由器之间设置静态路由。
您还可以使用wireshark查看您发送的数据是否离开计算机,或者是否被一些讨厌的防火墙丢弃。
在使LAN工作方面有很多警告。如果这些简单的步骤对您没有帮助,或者您遇到重大麻烦,您可能想询问有关networking.stackexchange的问题。或者只是在这里发表评论,我很乐意提供帮助。