0

我的 Winsock 编程小问题,我正在尝试将图形界面与在两个客户端之间传递数据的能力集成在一起。

基本上,按下 C 并执行第一段代码,然后我会得到一个“套接字错误”,这是我在此处的第二段代码中的 MsgBox 给出的。

case 'C':
{
    if(!Connected)
    {
        connect(s,(LPSOCKADDR)&me,sa_size);
        break;
    }
}

case WM_SOCKET:
    if (WSAGETSELECTERROR(lParam))
    {
        cout << "Socket error\n";
        WSAGetLastError();
        MessageBox (hwnd,"Socket Error123","Information",MB_OK);
        PostQuitMessage (0);
        return 0;
    }

我真的不知道该尝试什么来解决这个问题,我一直无法找到任何关于将图形界面添加到我目前拥有的网络代码中的帮助(在没有实现图形部分的情况下工作),只是看我目前能找到的任何帮助。

4

1 回答 1

0

当为真时,您的处理程序缺少'C'/break语句,当返回 0时,您的处理程序缺少/语句。returnConnectedWM_SOCKETbreakreturnWSAGETSELECTERROR()

此外,WSAGetLastError()WM_SOCKET. 您必须使用WSAGETSELECTERROR()报告的错误代码。

尝试这个:

case 'C':
{
    if (!Connected)
        connect(s,(LPSOCKADDR)&me,sa_size);
    break;
}

case WM_SOCKET:
    if (WSAGETSELECTERROR(lParam))
    {
        std::cout << "Socket error " << WSAGETSELECTERROR(lParam) << " on Event " << WSAGETSELECTEVENT(lParam) << std::endl;
        MessageBox (hwnd, TEXT("Socket Error"), TEXT("Information"), MB_OK | MB_ICONERROR);
        PostQuitMessage (0);
        return 0;
    }
    break;
于 2012-12-19T22:36:49.770 回答