有没有人知道AsyncSelect是怎么用啊!!!急!!再线等!!!

qianyong325 2003-09-11 03:43:37
有没有人知道AsyncSelect是怎么用啊!!!急!!再线等!!!
...全文
36 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhanshenpkl 2003-09-12
  • 打赏
  • 举报
回复
如果你是从CAsyncSocket派生的话,一般不用调用AsyncSelect,默认的情况是什么消息都触发就是FD_READ | FD_WRITE | FD_OOB | FD_ACCEPT | FD_CONNECT | FD_CLOSE ;当然如果你想自己过虑消息就可以调用AsyncSelect函数,只有满足传进的参数才会触发响应函数。
如:AsyncSelect(FD_CLOSE)就是只响应关闭消息,其它的消息都不响应,也就是说底层将不传递除了FD_CLOSE以外的消息,这样你的接收、发送、连接的响应函数都不能得到调用,除非你再次用AsyncSelect打开相应的消息。
aqbidt 2003-09-11
  • 打赏
  • 举报
回复
看看MSDN吧,上面关于API和MFC类的讲解和详细!
qianyong325 2003-09-11
  • 打赏
  • 举报
回复
hehe!!代码是vc知识库上的吧!我就是用这个代码,但是不能实现echo的功能!!!
不明白为什么?所以上网问的!
luckyghl 2003-09-11
  • 打赏
  • 举报
回复
常用的参数为 FD_WRITE FD_READ FD_ACCEPT FD_CONNECT
当使用这条语句后 上边四个参数分别对应以下四个函数
On_Send On_Receive On_Accept On_Connect
这四个函数都是CAsyncSocket类的虚函数
只要重载这四个函数 添加上相应的代码就可以使用了
void CCSockClientDlg::OnSend()
{
if (m_clientSocket.m_bConnected)
{
m_clientSocket.m_nLength=GetDlgItem(IDC_EDITMSG)->GetWindowText
(m_clientSocket.m_szBuffer, sizeof(m_clientSocket.m_szBuffer));
m_clientSocket.AsyncSelect(FD_WRITE);
SetWindowText("");
}

}

void MySock::OnSend(int nErrorCode)
{
Send(m_szBuffer,m_nLength,0);
m_nLength=0;
memset(m_szBuffer,0,sizeof(m_szBuffer));
//继续提请一个“读”的网络事件,接收Server消息
AsyncSelect(FD_READ);
CAsyncSocket::OnSend(nErrorCode);
}

18,356

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 网络编程
c++c语言开发语言 技术论坛(原bbs)
社区管理员
  • 网络编程
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧