CSocket + CFile + CArchiveの組み合わせでプログラムを組むのは
避けたほうがいいです。
データ受信の方法が間違っているのでしばらく送受信したあとで
データが到着しても受信イベントが発生しなくなります。
VC++6でコンパイルしたものは比較的ましに動きますが、
VC++2005/2008でコンパイルしなおしたものだとちょっと動かした
だけですぐ受信が止まります。
#自作アプリでもVC++6に付属のchatter/chatsrvrサンプルでも受信は止まる。
#chatter/chatsrvrはVC++2005/2008にはもう附属されなくなった。
MFCはかなりよくできたライブラリだと思いますが、
CSocket + CFile + CArchiveの抽象化についてはたぶん設計ミス。
> CSocket + CFile + CArchiveの組み合わせでプログラムを組むのは
> 避けたほうがいいです。
それは裏返せば CSocket/CAsyncSocket だけ使ってるうちは無問題てことですか?
>それは裏返せば CSocket/CAsyncSocket だけ使ってるうちは無問題てことですか?
↓のような批判もありますが、
http://www.kt.rim.or.jp/~ksk/wskfaq-ja/articles/csocket.html
僕がソースを読んだ限りでは概ね(?)大丈夫なんじゃないかと思います。
CAsyncSocketのほうは割と薄いWinSockラッパーなので、そちらのほうが
お勧めかなぁ~。
自作ソフトはMFCを使うわけにはいかない別の事情ができて、骨組みから大改造。
CAsyncSocketの仕組みを真似たSocketクラスを自作しちゃいましたけど。
補足です。
>CAsyncSocketのほうは割と薄いWinSockラッパーなので、そちらのほうが
>お勧めかなぁ~。
CSocketのブロック型模倣の問題はマルチスレッドにすれば
解決するというものではないので、少なくともサーバー側用途
としては使わないほうがよさそうに思います。