a C HTTP Client
C#やJavaでは簡単にhttp Clientプログラムができる。C言語ではソケットを作成するところから必要です。またWindowsとLinux両方対応するように書いたのでプログラムが長くなる。 (bcc32で動作確認済み) プログラムは、最初にsocketを生成してWebサーバに接続し、テキスト形式でHTTPリクエストメッセージを作成してWebサーバに送信する。 HTTPリクエストメッセージは、複数行から成り立つ一連のデータ列。ここでいう1行とは、終端にCR(キャリッジリターン、16進の0x0d)とLF(ラインフィード、16進の0x0a)を持つデータの単位を示す。ほぼ、通常のテキスト・データの1行と等しくなる。メッセージ・ヘッダとメッセージボディ部に分かれ、両者は空行(単独のCR+LF)で分割される。 httpを理解するには、telnetで手入力でHTTPをしゃべってみるがいい方法。 https://www.softel.co.jp/blogs/tech/archives/263 まずプログラムをリストする: #include <stdio.h> /* printf, sprintf */ #include <stdlib.h> /* exit, atoi, malloc, free */ // #include <unistd.h> /* read, write, close */ #include <string.h> /* memcpy, memset */ #ifdef __linux__ #include <sys/socket.h> /* socket, connect */ #include <netdb.h> /* struct hostent, gethostbyname */ #include <netinet/in.h> /* struct […]
Dump file
DUMP で出力された内容を ダンプリスト と呼ぶ ダンプリスト左端はアドレス(ファイル先頭からの位置) ダンプリスト中央にある16進数(バイト)が列挙されてる部分がマシン語プログラム(バイトコード)を表している。 ダンプリスト右端は、バイトコードをキャラクタコードで表現したときの内容。ただしバイトで表現可能な数値はキャラクタコードの範疇を超えることがあるため、そのような場合はピリオドで表現される。 dump.c #include <stdio.h> int main(int argc, char* argv[]) { FILE *fp; unsigned char buf[16]; /* 読み込みバッファ */ unsigned long addr = 0; /* 先頭からのアドレス */ int readnum, i; if(argc <= 1) { printf(“usage:dump filename\n”); return 1; } if(!(fp = fopen(argv[1], “rb”))) { printf(“file open error.\n”); return 1; } while(1) { printf(“%08x […]
[GCC]C Compiler on Linux
C言語の最小限の開発環境を作る手順 エディタをインストール コンパイラをインストール コンパイラにPATHを通す設定をする エディタをインストール Atomという新世代のエディター(Windows、Mac OS X、Linux対応)をインストールしてください。 公式サイト コンパイラをインストール LinuxでのC言語開発環境について解説しています。「GNU Compiler Collection」が一般的です。 それでは gcc をインストールしていきます。 Debian Debianでは、apt-getコマンドを使ってgccをインストールします。 # apt-get install gcc Ubuntu UbuntuはDebianベースのディストリビューションなので、Debianと同じようにa apt-getコマンドを使います。ただ、Ubuntuにはrootユーザーという概念がないので、sudoコマンドでインストールしていきます。 $ sudo apt-get install gcc CentOS CentOSでは、yumコマンドを使ってgccをインストールします。 # yum install gcc 以上で、コンパイラ(gcc)のインストールは完了です。 コンパイラにPATHを通す設定をする 不要です。 ソースコードコンパイル C言語プログラムのファイル名を「hello.c」というファイルを作成します。ファイルの中身は「Hello, World!」という文字列を出力するプログラムです。 hello.cをコンパイルします。 $ gcc hello.c エラーが表示されなければ、OKです。 プログラムの実行 実行します。 $ ./a.out Hello, World 無事に実行できましたね。
[GCC]C Compiler on Windows
WindowsでgccをインストールするにはMinGWを利用した、C言語の最小限の開発環境を作る手順 エディタをインストール コンパイラをインストール コンパイラにPATHを通す設定をする エディタをインストール Atom、VSCodeなど新世代のエディター(Windows、Mac OS X、Linux対応)をインストールしてください。 コンパイラをインストール C言語コンパイラって幾つかありますが、visual studioはファイルサイズがデカいので却下です。gccのインストールをオススメします。gccはMacでもLinuxでもWindowsでも使えます。 コンパイラの違い一覧 システム mingw-jp Visual Studio .net Borland C++ Builder コンパイラ名 gcc cl bcc32 オブジェクトファイルの拡張子 .o .obj .obj 実行ファイル名指定 -o ファイル名 -o ファイル名 -eファイル名 make コマンド mingw32-make nmake make 依存ファイルマクロ $^ $** $** WindowsでgccをインストールするにはMinGWというソフトを使う必要があります。 MinGW | Minimalist GNU for Windows MinGWのホームページで「Downloads」をクリック sourceforgeというサイトに飛びます 「Download mingw-get-setup.exe […]