winsock windowprocでFD_WRITEの処理
すみません。よくわからなくなったので教えてください。
非同期処理を行いwindowprocで送信、受信の処理をしているのですが、一部わかりません。
[内容]
クライアントからデータを送信してもらい、サーバ側で受信をして、サーバ側で受信後、クライアントへ送信をしたいのですが....
[サーバ側ソース抜粋]
::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
{
int EventErrorCoode;
int len;
switch(message)
{
case FM_TCPPROC:
EventErrorCoode = WSAGETSELECTERROR(lParam);
switch(WSAGETSELECTEVENT(lParam)){
case FD_CONNECT:
//コネクトされたときの処理
break;
case FD_ACCEPT:
if(EventErrorCoode != 0){
NetWork_LogOut();
break;
}
// 状態判定処理
if(NetWork_Accept() == FALSE){
//失敗したときの処理
}
break;
case FD_READ:
// データの受信メッセージ
if(NetWork_Recv() == FALSE){
}
break;
case FD_WRITE:
//テスト折り返し送信
SendData = "折り返し";
strcpy(Recv_Buffer,SendData);
len = send(server_s, Recv_Buffer, strlen(Recv_Buffer),0);
break;
:
:
return CDialog::WindowProc(message, wParam, lParam);
}
::NetWork_Recv()
{
int nResult;
int len;
nResult = recv(client_s, (CHAR *)Recv_Buffer, RECV_SIZE - 1, 0);
Recv_Buffer[nResult] = '\0';
return TRUE;
}
*非同期処理はsocket作成後しています。
クライアントから送信されたデータが、FD_READで認識し、NetWork_Recv()関数を使って受信します。
その後、空になった時点で、FD_WRITEを実行すると思っていたのですが、recvされた後、データは空にならないのでしょうか?