私はnewtworkイベントベースのソケットアプリケーションに取り組んでいます。
クライアントが何らかのデータを送信し、ソケットで読み取るものがある場合、FD_READ ネットワーク イベントが生成されます。
私の理解によれば、サーバーがソケットを上書きしたい場合、FD_WRITEなどのイベントが生成されている必要があります。しかし、このメッセージはどのように生成されるのでしょうか?
読み取り可能なものがあれば、FD_READ が自動的に生成されますが、サーバーが何かを書きたい場合の FD_WRITE はどうでしょうか。
この混乱を手伝ってくれる人はいますか?
以下はコード スニペットです。
WSAEVENT hEvent = WSACreateEvent();
WSANETWORKEVENTS events;
WSAEventSelect(newSocketIdentifier, hEvent, FD_READ | FD_WRITE);
while(1)
{ //while(1) starts
waitRet = WSAWaitForMultipleEvents(1, &hEvent, FALSE, WSA_INFINITE, FALSE);
//WSAResetEvent(hEvent);
if(WSAEnumNetworkEvents(newSocketIdentifier,hEvent,&events) == SOCKET_ERROR)
{
//Failure
}
else
{ //else event occurred starts
if(events.lNetworkEvents & FD_READ)
{
//recvfrom()
}
if(events.lNetworkEvents & FD_WRITE)
{
//sendto()
}
}
}