使用Arduino以太网库将文本数据发送到远程套接字

时间:2017-08-05 13:54:34

标签: python sockets tcp

我正在努力完成某件事。问题是,我有一个带有传感器的arduino,我想从我的办公室记录他们的读数并将数据发送到我家的电脑。我使用Arduino以太网屏蔽将arduino连接到互联网,并且为了发送数据,我使用了EthernetClient。为了接收数据,我使用了一个运行在地址" 1111"在我的家用电脑上。但是,当我想将数据发送到家用计算机时,它表示连接失败。

我已经在我的家用机器,端口80和端口1111上转发了两个端口。当我在浏览器上使用IP地址和端口80登录家用PC时,它向我显示我在那里托管的HTTPD服务器。但是,当我使用Arduino连接到相同的IP地址和端口80时,连接失败。

这是我的代码:

1。 Arduino的:

#include <SPI.h>
#include <Ethernet.h>

byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };

IPAddress server(100, 65, 91, 226); // <<<<<<< My server Address
IPAddress ip(192, 168, 0, 177);

EthernetClient client;

void setup() {
Serial.begin(9600);
while (!Serial);

if (Ethernet.begin(mac) == 0) {
  Serial.println("Failed to configure Ethernet using DHCP");
  Ethernet.begin(mac, ip);
}


delay(1000);
Serial.println("connecting...");

if (client.connect(server, 1111)) {
  Serial.println("connected");
} else {
  Serial.println("connection failed");
}
}

void loop() {
    client.println("data to be sent");  
}

2。 Python的

import socket
import time

sck = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
if not sck:
    print "Could not create a socket for listening on this machine!"
else:
    print "Successfully created a socket"

sck.bind(("", 1111))
sck.listen(20)

print "listening to socket 111"


def listen():
    while True:
        clientSocket, clientAddr = sck.accept()
        if not clientSocket:
            print "No connection yet!"
            continue

        print "connected with", clientAddr
        while True:
            receiv = clientSocket.recv(4096)
            print receiv
            if not receiv:
                print "Client lost connection!"
                listen()

listen()

我对arduino比较陌生。但是,当我尝试使用另一个网络上的另一台机器将数据发送到python套接字时,它是成功的。 Arduino似乎无法连接到套接字。我能做什么? 谢谢!

0 个答案:

没有答案