【ラズパイ】ネットワークでデータを送信する。

こんな感じで、ラズパイのデータをWindows PCへ送信させたいと思います。

ラズパイ側はPythonでHATのセンサーにアクセスしているので、Pythonで送信を行います。

Windows側は、言語は何でも良いのですが、今回はC#で書こうと思います。

とりあえず、今回は通信ができるところまでを確認します。

ラズパイ側のソースはこんな感じ。

import json
import urllib.request

url = 'http://192.168.1.3:8000'
data = {
    'foo': 123,
}
headers = {
    'Content-Type': 'application/json',
}

req = urllib.request.Request(url, json.dumps(data).encode(), headers)
with urllib.request.urlopen(req) as res:
    body = res.read()

こちらのソースコードを丸パクリです。

https://qiita.com/hoto17296/items/8fcf55cc6cd823a18217

Windows側のコードはこんな感じです。

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading.Tasks;

namespace http_server
{
    class Program
    {
        static void Main(string[] args)
        {
            try
            {
                HttpListener listener = new HttpListener();
                listener.Prefixes.Add("http://192.168.1.3:8000/");
                listener.Start();
                while (true)
                {
                    HttpListenerContext context = listener.GetContext();
                    HttpListenerRequest req = context.Request;
                    StreamReader reader = new System.IO.StreamReader(req.InputStream, req.ContentEncoding);
                    string s = reader.ReadToEnd();
                    Console.WriteLine(s);
                    HttpListenerResponse res = context.Response;
                    res.StatusCode = 200;
                    byte[] content = Encoding.UTF8.GetBytes("HELLO");
                    res.OutputStream.Write(content, 0, content.Length);
                    res.Close();
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Error: " + ex.Message);
            }
        }
    }
}

ホントにデータを送受信するだけのコードで、エラーとかは全く考慮していません。

Windows側のプログラムを先に実行し、その後ラズパイのコードを実行すると、Windows側のコンソールにこんな感じで出力されます。

これをカスタマイズすればセンサーの情報もWindows PCに送信できそうです。

「【ラズパイ】ネットワークでデータを送信する。」への1件のフィードバック

コメントを残す

メールアドレスが公開されることはありません。

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください