WSAAsyncSelect的疑问?
如果在第三个参数设置为FD_READ和FD_WRITE
意味着在socket收到数据和可以发送数据时接到通知。
“收到数据接到通知”,则这个事件处理可以是调用recv或者recvfrom来接受数据。我的问题是“可以发送数据时接到通知”怎么理解?不是直接利用send或者是sendto发送了么?
那么接受到这个通知事件有什么用,该怎么处理???

解决方案 »

  1.   

    FD_WRITE在几种情况下产生:1. When WSAAsyncSelect called, if a send or sendto is possible. 
    2. After connect or accept called, when connection established. 
    3. After send or sendto fail with WSAEWOULDBLOCK, when send or sendto are likely to succeed. 
    4. After bind on a connectionless socket. FD_WRITE may or may not occur at this time (implementation-dependent). In any case, a connectionless socket is always writeable immediately after a bind operation. 看看你是否需要用它了。一般如果发送速度不快的话,每次send几乎都是成功的,也就不必care这个事件。
      

  2.   

    楼上的再回答一下
    当调用send时候,如果发送数据量很大,我怎么把数据放到队列里啊,
    这个时候也不知道send数据发送出去了没有,发送了多少。
    我现在要发送大量的实时视频数据,这些数据是自动捕获的,不管是不是发送了,
    一直都在产生数据,我是一帧一帧的发送,每一帧的大小为10k,
    每一秒中有30帧,这样会有大约300k bytes/s的数据量需要发送,接受也是
    一帧一帧的接受,但是这样运行程序后一会儿内存不但增大,怎么正确发送?给个意见?