VS2005エミュレータ

W-ZERO3が入院したのでプログラムを書いても実機で検証できない。とりあえずVS2005についてるデバッグ用WindowsMobileエミュレータを使うのだが、インターネット通信まわりがうまくいかない。listen用ソケットのCreateのとこにブレーク貼ってればちゃんと止まるんだが、立ち上げといてエミュレータ外のIEからlistenソケットにアクセスしても、OnAcceptでは止まらない。エミュレータ内のIEからアクセスしてもダメ。
 そもそも、コンパイル時からちょっと変だった。

CAsyncSocketの継承クラスからAcceptを呼ぶとメンバではありませんと言われる。

 ListenSocket.cpp(12) : error C2039: 'AsyncSelect' : 'CPushPullSocket' のメンバではありません。

とりあえずコメントにしてる。


void CListenSocket::OnAccept( int nErrorCode )
{
CPushPullSocket* pSock = new CPushPullSocket;

if ( Accept( *pSock )) {
pSock->AsyncSelect( FD_READ|FD_CLOSE ); // ここがエラー
} else {
delete pSock;
return;
}
}

#include "AFXINET.H" がエラーになる

AfxParseURLを使いたくて AFXINET.H をインクルードすると次のとこがエラーになる

#ifdef _AFX_NO_INET_SUPPORT
#error Internet Services classes not supported in this library variant.
#endif

 VS2005ベータだからダメなんか、WindowsMobileだからダメなのかいまいち不明。たぶん後者だと思うが、CEとWin32の違いをMSDNで調べると、なんか空白しか出力されない。

さらに調べると、CAsyncSocket ではなく CCeSocket を使えとあった

でも、CCeSocket のmethodに Accept ってなさそうなんだが。

さらにさらに、実際にVC2005ベータでコンパイルしてみると、CCeSocketなんて基本クラスは知らないと言い張るのであった

もう、何がなんだか