2016-04-07 12 views
1

私はLuaを初めて使っています。私は自分自身で次の問題を解決しようとしましたが、私はそれを理解できませんでした。ここに私の問題があります:私のiPhone上でNodeMCUのdevkitで私のWebサーバーにアクセスすることはできません

私はNodeMCU devkit v0.9でWebサーバーを実行しています。自分のコンピュータでWebサーバーに簡単にアクセスできますが、私のiPhoneでサーバーにアクセスしようとすると、またはrequestsモジュールをPythonで使用すると、いつもメッセージが表示されますThe network connection was lost.次のファームウェアを使用しています:nodemcu_float_0.9.6-dev_20150704 。

print(wifi.sta.getip()) 
led1 = 3 
led2 = 4 
gpio.mode(led1, gpio.OUTPUT) 
gpio.mode(led2, gpio.OUTPUT) 
srv=net.createServer(net.TCP,30) 
srv:listen(80,function(conn) 
    conn:on("receive", function(client,request) 
    local buf = ""; 
    local _, _, method, path, vars = string.find(request, "([A-Z]+) (.+)?(.+) HTTP"); 
    if(method == nil)then 
     _, _, method, path = string.find(request, "([A-Z]+) (.+) HTTP"); 
    end 
    local _GET = {} 
    if (vars ~= nil)then 
     for k, v in string.gmatch(vars, "(%w+)=(%w+)&*") do 
      _GET[k] = v 
     end 
    end 
    buf = buf.."<h1> ESP8266 Web Server</h1>"; 
    buf = buf.."<p>GPIO0 <a href=\"?pin=led1\"><button>SWITCH LIGHTS</button></a></p>"; 
    buf = buf.."<p>"..gpio.read(led1).."</p>"; 
    local _on,_off = "","" 
    if(_GET.pin == "led1")then 
     if(gpio.read(led1) == 1) then 
      gpio.write(led1, gpio.LOW); 
     else 
      gpio.write(led1, gpio.HIGH); 
     end 
    else end 
    client:send(buf); 
    client:close(); 
    end) 
end) 
+0

0.9.xバージョンは時代遅れであり、もはやサポートされていません。 http://nodemcu.readthedocs.org/ja/dev/ja/build/に従って独自のファームウェアをビルドし、もう一度やり直してください。 https://git.io/vVy4GにWebサーバーの例がありますが、それは遅かれ早かれhttps://git.io/vVy4Cで削除される可能性があります。 –

+0

こんにちは私はそれを解決しました。あなたの解決策は私にとってはうまくいかなかった。しかし、私を助ける時間をとってくれてありがとう! – Viktor

+1

それで問題は何ですか?あなた自身の質問に答えを書いて、他の人がそれから学ぶことができるようにしてください。 –

答えて

2

私はこの問題を、htmlバッファの先頭にいくつかの情報を追加することで解決できました。置き換え:local buf=''local buf="HTTP/1.1 200 OK\r\nContent-type: text/html\r\nConnection: close\r\n\r\n"

私はデスクトップのブラウザはこの点でもっと寛容であると思います。

+1

ソースコードの代わりに送信できる.htmlファイルを作成することもできます。 – Viktor