C言語でソケット通信

漸くC言語でクライアント・サーバなソケット通信プログラムのサンプルが動いた。

ネット上のサンプルと、微妙にヘッダファイルの名前やパスが違っていて手こずった。

 

これで、C/C++/python の3言語で、それぞれクライアントとサーバのサンプルが動いたことになる。

あ、そういえばあと nc(netcat)によるクライアント・サーバもあった(^^)

 

本番は、サーバ側はC++または python, クライアント側は C言語になる予定。その理由は、サーバ側は

を想定している。

クライアント側は IoT なデバイスとして

  • ESP32
  • ESP8266(WROOM-02)
  • RasPi Zero W
  • mbed(Nucreo) + ESP8266

といったものを想定している。なので、クライアント側はほぼC言語、サーバ側はなんでもありだ。

本来は、送受信するデータ構造の設計が必要。ネットワークバイトオーダや、構造体のパディングなどを考慮して、送信データにするための変換処理が必要。

 

  1. 固定長文字列
  2. 構造体
  3. ヘッダ(データサイズ)
  4. データの欠損/破壊等の検出用フラグ

など、真面目に考えると大変。可変長に対応するとか、ヘッダの構造が複雑になる。