2022-12-01から1ヶ月間の記事一覧
C言語にてソケット関数を使って WebSocket クライアント を作成する の続きです 前回はWebSocket クライアント を作成したので 今回はWebSocket サーバー を作成する。 まずはオープニングハンドシェイクから。 HTTP/1.1 101 Switching Protocols Upgrade: w…
Boost.Beast で WebSocket を試す の続きです。 前回は TCP通信のやり取りを解析したので、 今回はC言語のソケット関数を使ってクライアント を作成してみます。 すでにやっている人がいて どこかにコードがあると思ったが、見つからなかった。 下記のプロト…
Boost.Beast は Boost.Asio の上に実装された HTTP と WebSocket の C++ライブラリです。 WebSocket は 単一のTCPコネクション上に双方向通信のチャンネルを提供する 通信プロトコルです。 RFC 6455 として標準化されている。 Boost.Beast wikipedia: WebSoc…
Mac にて UUID を生成する の続きです Boost はC++用のソフトウェアライブラリです。 Boost には UUID を生成する random_generator() などの関数がある。 wikipedia: Boost C++ライブラリ 下記を参考にした。 boostjp: オブジェクトにユニークなIDを付ける …
UUID(Universally Unique Identifier)は、ソフトウェア上でオブジェクトを一意に識別するための識別子です。 wikipedia: UUID Mac にてUUID を生成する方法は2つある。 (1) libuuid Linuxと同様にC言語のAPI (2) CFUUID Mac固有のAPIで,Objective-C(ある…
C言語にて Openssl を使って SHA1 ハッシュを計算する の続きです Boost はC++用のソフトウェアライブラリです。 Boost にはハッシュ関数として sha1, md5 が用意されている。 wikipedia: Boost C++ライブラリ ハッシュ関数の使い方は、下記を参考にした。 C…
Openssl は SSLプロトコルのライブラリです。 SHA1はハッシュ関数の1つです。 ハッシュ関数は任意のデータから短い値を得るための関数です。 その値をハッシュ(hash)あるいはダイジェス(digest)という。 wikipedia: OpenSSL wikipedia: SSL (Secure Sockets…
Mac に MySQL をインストールする の続きです。 MySQL には 大きなバイナリデータを保存する BLOB型 (Binary Large Object) が用意されている。 mysql: BLOB 型と TEXT 型 wikipedia: バイナリ・ラージ・オブジェクト しかしMySQL には BLOB 型を扱うための…
C言語にてバイナリデータを16進文字列に変換する の続きです。 Boost はC++用のソフトウェアライブラリです。 Boost には、hex()/unhex() などの関数がある。 wikipedia: Boost C++ライブラリ boost hex 下記を参考にした。 Faith and Brave - C++で遊ぼう i…
16進文字列は 1バイト(8ビット)のデータを16進文字 2文字で表現したものです。 どこかに定義がありそうな気がするが、 見つからなかった。 十六進法 下記を参考にした。 C言語 hexdump(16進ダンプ)を自作する // 読み込んだデータを1バイトずつ16…
C言語にてバイナリデータを Base64 文字列に変換する の続きです。 Boost はC++用のソフトウェアライブラリです。 Base64の変換テーブルを内蔵していて、base64_from_binary などの関数がある。 wikipedia: Boost C++ライブラリ boost base64_from_binary.hp…