なんとなくで

友達に渡されて、どんな本なのコレ?と解らないまま購入した
Linuxネットワークプログラミングを少し読んで最初の基礎的なプログラム作ってみた。
(ほんと何故買ったんだろう…)


単純なTCPサーバの実装ということでサーバとクライアント側でHELLOという文字のやり取りをやって
出力するプログラムを本見ながら作成。コードの載せ方とかまだ解らないので、手順を記入


サーバー側の手順
 ■ソケットを作る
 ■接続待ちをするIPアドレスとポートを設定
 ■ソケットに名前を付ける(bind()する)
 ■接続を待つ
 ■クライアントからの接続を受け付ける
 ■通信を行なう


クライアント側の手順
 ■ソケットを作る
 ■接続相手を設定する(今回はプライベートアドレス"127.0.0.1")
 ■接続する
 ■通信を行なう

後は同じディレクトリ内にプログラム入れてるからコンパイル結果をserverとclientでそれぞれ出力
コンパイルも終わったから、端末で実行してみた。
実行    結果
./server → 何も無し(実際はこの時点でおかしい)
./client → -1
(-1)って結果はエラーらしく、通信に障害が発生した場合の返り値とかそんならしい。
「なんかミスった!」ということで、プログラムを本と見比べて見直してみる。
サーバー側のプログラムにそもそもincludeが一個足りない、終了処理が不足というお粗末なエラーを発見。
取りあえず修正して実行した所変化なかった。
もう一回確認したら、サーバー側でソケット作ってなかった…


見ながら入力して、丸ごと2〜3行記述してないってどうなのよ
そういえばコンパイル結果もserverじゃなくてseverってスペルミスしてたなぁ


気を取り直してもう一回実行。
サーバー側のプログラムを実行したらそのまま接続待ちになってしまい処理が出来なかったので、
./server & と入力して実行。
こうするとサーバー側のプログラムがバックグラウンドで実行される事から、
クライアント側のプログラムが実行できるらしい。
今後、同一ホスト上で実行する際には必要になりそうなので取りあえず覚えときたい所。


一応これでエラーとかでずにサンプルプログラムが実行されてHELLOが出力されたんだけど、
何か色々と変なミスしたなぁ…とりあえずサンプルあるのに記述ミスったっていうのは
集中力が足りない証拠だよなぁと思った。


単純な通信のやり取りしかしてないけど、チマチマゆっくり進める予定なので今回はこれで終了
明日は全体ゼミ用の資料作り上げたい所。
あと何かブログ作成なれてなくて見難い状態になってるからその辺も少しずつ何とかしないとなぁ…