0

ボタンがクリックされたときに、参照された c++ dll を呼び出す ac# gui があります。C ++ dllには、次のコードがあります

  SOCKADDR_IN server; 

    server.sin_port=htons (54321); 
    server.sin_family = AF_INET; 

    server.sin_addr.s_addr = INADDR_ANY; 

    // Connect to server.
    int iResult = connect(Socket, (SOCKADDR *) & server, sizeof (server));
    if (iResult == SOCKET_ERROR) {

          long iError = WSAGetLastError();
            if (iError == WSAEWOULDBLOCK)
                printf("recv failed with error: WSAEWOULDBLOCK\n");
            else
                printf("recv failed with error: %ld\n", iError);

        wprintf(L"connect function failed with error: %ld\n", WSAGetLastError());
        iResult = closesocket(Socket);
        if (iResult == SOCKET_ERROR)
        wprintf(L"closesocket function failed with error: %ld\n", WSAGetLastError());
        WSACleanup();
        return 1;
    }

dllが呼び出される前のC#呼び出しプログラムと、dllでwinsock2によって行われた接続では、私は持っています

IPAddress localAddr = IPAddress.Parse("127.0.0.1");
TcpListener serverSocket = new TcpListener(localAddr,54321);
int requestCount = 0;
TcpClient clientSocket = default(TcpClient);
serverSocket.Start();

次に、dllが呼び出された後、私は

// dll を呼び出して Connect コードを実行します

clientSocket = serverSocket.AcceptTcpClient();//hangs up here because dll can't Connect.

C++ dll で Connect にステップ インすると、WSAEADDRNOTAVAIL であるエラー 10049 が発生します。

msdn winsock エラー コード

Connect 呼び出しで何が間違っていますか? msdn の例に従って、ポートとして 54321 を選択しました。ありがとう!

4

1 に答える 1