【发布时间】:2013-05-10 09:28:22
【问题描述】:
我正在开发基于 newtwork 事件的套接字应用程序。
当客户端已经发送了一些数据并且在套接字上有要读取的内容时,会产生 FD_READ 网络事件。
现在根据我的理解,当服务器要通过套接字写入时,必须有一个事件产生,即FD_WRITE。但是这个消息是怎么产生的呢?
当有可读取的内容时,FD_READ 会自动生成,但是当服务器要写入内容时,FD_WRITE 呢?
谁能帮我解决这个困惑?
下面是sn-p的代码:
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()
}
}
}
【问题讨论】:
标签: c windows winapi events network-programming