mfc,网络通信,套接字的有关问题
mfc,网络通信,套接字的问题
我有2个对话框,一个主对话框,一个登陆对话框;主对话框ClientDlg登陆对话框CLogDlg;
主对话框的属性 clientsock ,OnInitDialog函数,函数代码如下:
OnInitDialog()
{
CLogDlg dlg;
if (dlg.DoModal()==IDOK)
{
ClientSock = dlg.LogSock;
//将serverSock设置为异步非阻塞模式,并为它注册各种网络异步事件
//其中的m_hWnd为应用程序的主窗口的句柄
if(WSAAsyncSelect(ClientSock,m_hWnd,NETWORK_EVENT,FD_CONNECT|FD_CLOSE|FD_READ|FD_WRITE)
==SOCKET_ERROR)
{
MessageBox("注册网络异步事件失败!");
WSACleanup();
return false;
}
}
}
登陆对话框的函数有, BOOL InitSock();OnOK() ,属性LogSock
InitSock函数,创建客户端的套接字并连接服务器,创建的InitSock是正确的可以给服务器发送数据。
当我在登录对话框点击登陆,登陆对话框创建好LogSock,并且调用OnOK,也正确。
等我跳转到主框是,在OnInitDialog函数时,出错了,弹出“注册网络异步事件失败”
为什么,我给主框的套接字赋值了,为什么还是错了,改如何改,错在哪了,谢谢各位的回答
------解决方案--------------------
赋值即可,就这么简单
我有2个对话框,一个主对话框,一个登陆对话框;主对话框ClientDlg登陆对话框CLogDlg;
主对话框的属性 clientsock ,OnInitDialog函数,函数代码如下:
OnInitDialog()
{
CLogDlg dlg;
if (dlg.DoModal()==IDOK)
{
ClientSock = dlg.LogSock;
//将serverSock设置为异步非阻塞模式,并为它注册各种网络异步事件
//其中的m_hWnd为应用程序的主窗口的句柄
if(WSAAsyncSelect(ClientSock,m_hWnd,NETWORK_EVENT,FD_CONNECT|FD_CLOSE|FD_READ|FD_WRITE)
==SOCKET_ERROR)
{
MessageBox("注册网络异步事件失败!");
WSACleanup();
return false;
}
}
}
登陆对话框的函数有, BOOL InitSock();OnOK() ,属性LogSock
InitSock函数,创建客户端的套接字并连接服务器,创建的InitSock是正确的可以给服务器发送数据。
当我在登录对话框点击登陆,登陆对话框创建好LogSock,并且调用OnOK,也正确。
等我跳转到主框是,在OnInitDialog函数时,出错了,弹出“注册网络异步事件失败”
为什么,我给主框的套接字赋值了,为什么还是错了,改如何改,错在哪了,谢谢各位的回答
通信
MFC
网络
对话框
服务器
------解决方案--------------------
赋值即可,就这么简单