Shammer's Philosophy

My private adversaria

2009-07-01から1ヶ月間の記事一覧

EchoServerV3

C

EchoServerV2 - Shammerismの EchoServer を動作させて、クライアントからメッセージ送ってみたけれども、受け取ったメッセージを表示させない作りになっていたので表示させるようにちょっとだけ書き換えました。 // http://d.hatena.ne.jp/shammer/20090730…

ネットワークバイトオーダー

C

先日のEchoClient を実装したが動かず - Shammerismが動作しない原因は、ネットワークバイトオーダーに関係するものであったとわかった。具体的には、 // Build Destination Socket Informations memset(&destination_addr, 0, sizeof(destination_addr)); d…

Mac でZIPにパスワードを使用

Mac

ターミナルでやる方法がわからなかったのでいろいろ調べました。 10.5以前は使えないかもしれないのですが、 zipcloak hogehoge.zipというコマンドがあるようだ。 これをやると、 Enter password: (PASSWORD入力。空白状態) Verify password: 同上というプ…

長男誕生!

今日は自分の人生にとって忘れられない一日となるだろう。 昨夜、会社から帰ると妻の様子がおかしい。お腹が痛いらしく、ついにキタか・・・という気持ちになった。 すぐに病院に行った方がいいと判断して、病院にTEL。夜中の九時過ぎに家を出た。 病院に行…

EchoClient を実装したが動かず

C

EchoServer ができているので、動作確認のためのクライアントも書いてみました。 #include <ctype.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <arpa/inet.h> #include <netinet/in.h> int error_exit(char *message) { perror(message); exit(1); } int checknumber(char *v){ int len = strlen(</netinet/in.h></arpa/inet.h></string.h></stdlib.h></stdio.h></ctype.h>…

文字列とポインタ

C

なんかわかったようなわからないような・・・ Cで文字列を扱う場合は、 int main(void) { char *value = "TEST"; printf("%s\n", value); return 0; }というように、char型のポインタに""で囲んだ文字列を代入し、以降はそのポインタが代入した文字を指す、 …

環境変数取得方法

C

main関数の引数に、char* envp[] というような第三引数を指定すれば、 OSの環境情報を取得可能。 #include <stdio.h> int main(int arg_count, char* args[], char* envp[]) { char** p; for( p = envp ; *p != NULL ; p++ ){ printf("%s\n", *p); } return 0; }名前</stdio.h>…

Compilerは味方だ

C

相変わらず、ポインタと格闘している。 でも、ただ単に動かすだけというのであれば、コンパイラって本当にありがたい。 自分ではポインタが示す型とかまで気づかず、間違えてコーディングしてしまっても コンパイラはそれを見つけて教えてくれる。 プログラ…

文字列の配列

C

Cでは文字列を配列として扱うにはcharの配列をポインタとして宣言するらしい。 こんな感じ。 char* data[] = {"abc", "def", "xyz"};コマンドライン引数が数値かチェックする際も少し混乱したな。 JavaだとStringクラスがあったけれどCにはないため、常にcha…

ポインタを文字列として表示させようとすると・・・

C

C言語をいじっていて、よくわからないことが起きた。 char str[] = "vwxyz"; printf("str :%s %d\n", str, sizeof(str)); printf("str OK\n"); printf("*str :%s %d\n", *str, sizeof(*str));/* Bus error */ printf("*str OK\n");str[]と、配列宣言している…

Socket 構造体

C TCP

いくつかのサイト等参考にして、C で EchoServer などの簡単なプログラムを書いてきたけれども、似たような名前の構造体がたくさん出てきて、おまじない感覚で書いているので少し調べてみた。大きく、以下の3つがあるようだ。 sockaddr in_addr sockaddr_in…

EchoServerV2

C

EchoServer - Shammerismに書いた EchoServer を見直し、少し修正した。 変換点は以下。 sin_addr.s_addr で INADDR_ANY を使用していたのでリスンアドレス用引数は省略し、使用するポートのみに変更 引数はポートを想定しているので、数値になっているかを…