winsockの非同期処理について
winsockで双方向通信のため、非同期処理を行っているのですが、うまくいきません。
クライアント側で、WSAAsyncSelectの処理の後、Connectを呼んでいるのですが、Connectでエラーメッセージを返します。(エラーナンバー: 10035)
サーバ側はaccept処理はうまくいっているのですが、accept後うまく処理を返していないためだと思うのですが...
で質問は、
1.クライアント側、サーバ側にそれぞれ、WSAAsyncSelect
を記載しても問題ないか? クライアント側はConnect前で宣言。 サーバ側はbind前で宣言しています。
2.エラー番号10035は非ブロッキングモードで処理されないためにおきています。 Connectで非ブロッキングモード処理がされていないためだと思うのですが、他に記述しないといけない関数があるのでしょうか?
クライアント側:
// 非同期処理
if(WSAAsyncSelect(client_s,this->m_hWnd, FM_TCPPROC, FD_CONNECT | FD_READ | FD_WRITE | FD_CLOSE) == SOCKET_ERROR){
return FALSE;
}
// コネクト処理
memset(&client,0,sizeof(client));
client.sin_family = AF_INET;
client.sin_addr.s_addr = inet_addr(IpAddress);
client.sin_port = htons(PORT_NO);
if(connect(client_s, (LPSOCKADDR)&client, sizeof(client)) == SOCKET_ERROR){ <-- ここでエラー
long ErrNum = WSAGetLastError(); <-- ここでエラーNoがかえる。
return FALSE;
}else{
NetFlg = true;
}
お分かりになる方教えてくださいませ。よろしくお願いします。