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なんて基本クラスは知らないと言い張るのであった
もう、何がなんだか