Diary of Sacred Fox - June 12, 2003

The Quintetには通算 179067 人(今日:0, 昨日:1)のお客様が来場しています

2003/06/12

熱砂

…って昔の日記のタイトルにも使ったことがあったような…
蒸し暑いとこういうのも何度でも書きたくなるものなのです

今日は半月に1度のOSの課題が出る
ネットワークの課題で『ECHOサーバとクライアントを作り, ネットワークの通信速度を計測せよ』とのこと
ECHOとはMS-DOSバッチファイルを作ったことがある人なら『頭に@を付けるとより玄人ECHO OFF』と書いたと思いますが, それに近いものです
要するに受け取った文字列をただただそのまま返すだけというつまらないサービスです
クライアントはサーバのみの動作確認には実際にtelnetを使いました早い話telnetです
とりあえずしっかり作ろうという考えの元, TCPには良く分からないが, データインと区別が付かないので, データが入っていないときにイベントを拾ったら切断と判断, もっといい方法がありそうだけど…接続の監視機能をつけたから大変, かなり面倒な実装になってみたり…
今日作れたのはTCP, UDPのサーバ, クライアントとTCPのベンチマーク
ベンチマークをやっている間にサーバのバグに気付いてみたりしてかなり大変な目に会いました
特にlocalhost通信を行う場合, かなり裏でのプロセスのぶつかり合いが出てきてまともな速度が出ないという事実
ついでに仕方ないので各所で溜まらないように処理を擬似スレッド(ライブラリのリンクは嫌だ)化したり, 結構怪しい処理になってます出力データが溜まって出力が上手くいかなくなってしまうことも多々あるような感じになってしまう…
ここで問題, クロスケーブルがありません, 仕方がないので地下のスイッチのうち外に繋がっていない物を1台拝借して接続, 皆でやったらスイッチよりも先にケーブルが枯渇しそうな予感, スイッチ自体はギガビットだけど其処でのディレイも気になるし…2台のPCをLAN接続した時の方がTCPで300Mbps台, エラー対策のコードが遅さの原因かもしれないかなり早かったりしました
明日はUDPの方のベンチマークを実装して回線速度の壁に近付いてみようかと思います

コツ: UDPの実装は後回しにしてTCPを先に完成させるべし, UDPはそれを単純化すれば出来る