0

私の Winsock プログラミングにはほとんど問題がありません。2 つのクライアント間でデータを渡す機能を備えたグラフィカル インターフェイスを統合しようとしています。

基本的に、C が押されてコードの最初のセクションを実行すると、ここにあるコードの 2 番目のセグメントの 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

が true の場合、ハンドラー'C'break/ステートメントがありません。また、 0 を返す場合、ハンドラーに/ステートメントがありません。returnConnectedWM_SOCKETbreakreturnWSAGETSELECTERROR()

また、WSAGetLastError()では意味がありませんWM_SOCKETWSAGETSELECTERROR()報告されたエラー コードを使用する必要があります。

これを試して:

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 に答える