有三种情况可以触发ON_SEND消息,一是connect,一是accept,一是send完成。但是我发现很多源程序在处理OnSend时,都把发送字符串的工作放在这个函数(即消息响应函数)里,而不是应用程序的发送函数中,很奇怪了。

解决方案 »

  1.   

    我的帖子有好几行,但是只有第一行显示出来。你拖动一下。1.没有ON_SEND消息。只有FD_WRITE消息, MFC将其映射为ONSEND()函数。
    FD_WRITE表示,现在网络已经准备好发送数据了,所以大都在这个函数中才SEND()。当然,一般情况下随意地调用SEND()也很少出问题。
    2。关于什么时候有这个消息,取决于你是否调用了ASYNCSELECT()函数,如果你使用CASYNCSOCKET及CSOCKET类,默认情况下,CREATE()时它自动调用了ASYNCSELECT(FD_WRITE),于是连接建立后,ONSEND()就会被调用。ASYNCSELETE(FD_WRITE)表示,需要发送数据,系统接到这个请求后,在网络不忙的时候,就会调用ONSEND()。
    3。需要发送数据时,先将数据缓存起来,然后调用ASYNCSELECT(FD_WRITE);在ONSEND中发送缓存中的数据。