デバッグ完了

| | コメント(0) | トラックバック(0)

 UNIX版から開発しているから、次にWindowsで動かす時のデバッグに時間が掛かった。原因はFD_SETSIZE絡み。UNIXだとFD_SETSIZEのサイズは1024で以下のようにディスクリプタが振られた。

0…標準入力
1…標準出力
2…標準エラー出力
3…ソケットサーバー
4…クライアント1(telnet)
5…クライアント2(telnet)

この時点では数の少ないほうからディスクリプタが振られ1024には遠く及ばないので特に問題ではない。

これがWindowsだとコマンドプロンプトから起動した場合

1956…ソケットサーバー
1928…クライアント1(telnet)
1912…クライアント2(telnet)

直接実行ファイルをダブルクリックして起動した場合でも、

96…ソケットサーバー
124…クライアント1(telnet)
140…クライアント2(telnet)

といった感じで肝心のFD_SETSIZEは64で定義されている為、そのままでは役に立たないどころかオーバーフローを起こしてサーバーが落ちてしまっていた。結局Windowsの場合はFD_SETSIZEを2048に再定義するという方法で逃げた。正直ココまでばらついているとループ回数が増える分不利な気がする。

この時点でチョットの変更でFLASHクライアント用になれるチャットサーバーができました。サーバー自身はデータの中身について全く検査はしてないのとバッファは固定値なので大量にデータを送ると最大値以降の文字は削除されてしまうくらいです。

ソースのダウンロードはこちら
Download file

トラックバック(0)

このブログ記事を参照しているブログ一覧: デバッグ完了

このブログ記事に対するトラックバックURL: http://blog.c-production.com/mt/mt-tb.cgi/131

コメントする

このブログ記事について

このページは、管理人が2006年1月 1日 16:57に書いたブログ記事です。

ひとつ前のブログ記事は「あけおめ」です。

次のブログ記事は「2006年の抱負」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.1