ラズパイからデータを送る時に起こった事


はじめに

pythonでラズパイからlocalhostのサーバにデータを送って色々と処理しようとしたときに、そもそもデータ送れないってなって困ってたのでその内容。


そもそも単純に送るならどうする?


JSON送るならこんな感じ

import requests
import json

#POST先URL
url = "POST送信するURL"

#JSON形式のデータ
jsonData = {
    "col1": "val1",
    "col2": "val2"
}    

#POST送信
response = requests.post(
    url,
    json = json.dumps(jsonData)     #jsonはなくても送信可能
    )

resDatas = response.json()

URL指定して後は終わりーって思ってたのに遅れない


理由


WindowsでWSL使ってたのだが
実際に入力していたURLはWindowsのip元にしたURLでした


WSL使ってると
WindowsのIPアドレスとWSLの二つのIPが生まれる
外部からlocalhostに接続しようと思うと

外部端末→WSLのIP→WindowsのIP
っていう順番になる。

外部接続の窓口はWSLのIP使う


今回僕はWindowsのIP使ったURLの方を使ってたから一つ段階とばしてる状態になってた。

ちゃんと窓口通さんと通信させへんぞ!!って怒られてるイメージ


ちなみに両方のipはコマンドプロンプトからipconfigで確認できる。


おそらくmacだとこうはならずに普通にIP通したら行けるはず。
なんかめんどくさいなwsl