2013-07-10 156 views
0

我有一个c#gui,当点击一个按钮时调用引用的C++ dll。在C++ DLL我有以下代码Winsock连接失败,错误10049

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; 
    } 

在C#调用程序的DLL调用和连接通过Winsock2的在DLL中做之前,我有

再经过
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运行连接代码

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

在C当我一步++ DLL在连接我得到错误10049,这是 WSAEADDRNOTAVAIL。

msdn winsock error codes

什么我在连接做错了电话?在msdn示例之后,我选择了54321作为端口。 谢谢!

回答