[TCP] CAsyncSocket::OnSend有什么用?我的CMyAsyncSocket sock来于CAsyncSocket,::send(sock, buf, bufSize, 0)和OnSend如何配合使用?甚是迷惑!
解决方案 »
- MFC ADO 的SetFieldValue和PutCollect 有啥区别呀 - -
- MFC MDI线程中获得CView类指针问题
- 关于MapViewOfFile的问题
- RPC当中的IF handle到底是什么意义?
- 如何在无绑定模式下使用DBGrid???急!!!!!!
- 請哪位前輩給一個包含多個dll的,並且在網葉中使用的.cab和.inf的配套事例!
- 24色位图锐化问题,很奇怪,平滑的成功代码改成锐化的!低通改高通滤波问题就出来了,急等啊!
- 有关函数模板的问题?请高手帮忙??????
- 怎样建立以自开发DCOM为中间件的3(n)层数据库应用系统。
- 请问:定义CCriticalSection时的错误提示是怎么回事?
- 求遍历tree内全部节点的代码
- 如何在树的节点中添加自定义的数据?
至于OnSend,那是每当套接口由不可写变成可写的时候(缓冲区的数据已经发得差不多了),在内建的窗口上收到另一条消息之后,由MFC调用的。
而send是socket api,可以直接发送数据,具体可见《windows网络编程》
===============================================
不可写变成可写的时候 / 是CAsyncSocket一直在检查?发现可写就 OnSend ?我的程序中在sock(CAsyncSocket类的)上用api发数据 ::send(sock, buf, bufSize, 0),可能一个也发不出,由CAsyncSocket检查可发再OnSend,再OnSend再::send(sock, buf, bufSize, 0)?可以这么做吗?
有CAsyncSocket的回调函数自动检测出,系统缓冲区可以自己设置
大小,也可以不用系统缓冲区直接发送:
int nZero=0;
setsockopt(socket,SOL_S0CKET,SO_SNDBUF,(char *)&nZero,sizeof(nZero));
setsockopt(socket,SOL_S0CKET,SO_RCVBUF,(char *)&nZero,sizeof(nZero));
这样当你主动调用send()的时候是一定能成功的! 其实OnSend() 这个东东在写代码
的时候用的很少(最好不用),发送OnSend()的时候也不只是系统缓冲区可用时候发出.