WSAAsyncSelect函数的句柄如何获取

zyrzgm 2008-06-05 12:35:12
大虾们,帮帮忙啊
我是菜鸟,刚学服务器编程!



问题是这样的:

void CServerDlg::OnStart()
{

WSADATA wsaData;
WSAStartup (WINSOCK_VERSION, &wsaData);
while(true)
{
SOCKET sock = startListen ();
[color=#0000FF]// HWND hWnd = GetSafeHwnd ();
// HWND hWnd = AfxGetApp()->m_pMainWnd->GetSafeHwnd();
// HWND hWnd = m_hWnd; // GetParentFrame()->m_hWnd;
// HWND hWnd = GetActiveWindow();
// HWND hWnd = (HWND)GetForegroundWindow();
// CWnd * hWnd=~GetForegroundWindow()
[/color]
int nResult = WSAAsyncSelect (sock, m_hWnd, WM_USERMSG, FD_READ | FD_WRITE | FD_ACCEPT | FD_CLOSE);
if(nResult == SOCKET_ERROR)
{
AfxMessageBox ("WSAAsyncSelect函数调用错误!"+ (CString)WSAGetLastError ());//+ GetLastError());
// m_list.InsertString(0,(CString)WSAGetLastError () );//AddString ((CString)WSAGetLastError () );
UpdateData (false);
return;
}
}

}

程序错误发生在int nResult = WSAAsyncSelect (sock, m_hWnd, WM_USERMSG, FD_READ | FD_WRITE | FD_ACCEPT | FD_CLOSE);
当我运行后,按"启动"后,WSAAsyncSelect调用错误,错误为代码为6,提示为句柄无效!
我用
// HWND hWnd = GetSafeHwnd ();
// HWND hWnd = AfxGetApp()->m_pMainWnd->GetSafeHwnd();
// HWND hWnd = m_hWnd; // GetParentFrame()->m_hWnd;
// HWND hWnd = GetActiveWindow();
// HWND hWnd = (HWND)GetForegroundWindow();
// CWnd * hWnd=~GetForegroundWindow()
获取句柄也无效.
大虾们有时间的话帮我看看,如果这个问题不解决,课程设计就做不下去了啊.
麻烦你们了!
...全文
51 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
zyrzgm 2008-07-06
  • 打赏
  • 举报
回复
唉,问题还是没有解决啊,不好意思了,大哥们
cnzdgs 2008-06-05
  • 打赏
  • 举报
回复
sock句柄无效。startListen里面要创建一个socket并返回。
  • 打赏
  • 举报
回复
startListen你是怎么写的

18,356

社区成员

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

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