2010-03-02 15 views
5

Ich verwende TCP/IP über ActiveSync, um eine Verbindung von Windows CE-Gerät zu Windows XP-Desktop herzustellen. Die WinSock-Funktion connect() ist immer erfolgreich, unabhängig davon, ob die Desktop-Server-Anwendung tatsächlich ausgeführt wird.Socket connect() ist immer erfolgreich (TCP über ActiveSync)

Die folgenden vereinfachten Code demonstriert dieses Problem:

#include "stdafx.h" 
#include <Winsock2.h> 

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    const int Port = 5555; 
    const char * HostName = "ppp_peer"; 

    WSADATA wsadata; 
    if (WSAStartup(MAKEWORD(1, 1), &wsadata) != 0) 
     return 1; 

    struct hostent * hp = gethostbyname(HostName); 
    if (hp == NULL) 
     return 1; 

    struct sockaddr_in sockaddr; 
    memset(&sockaddr, 0, sizeof(sockaddr)); 
    sockaddr.sin_family = AF_INET; 
    sockaddr.sin_addr.s_addr = ((struct in_addr *)(hp->h_addr))->s_addr; 
    sockaddr.sin_port = htons(Port);  

    int sock = socket(AF_INET, SOCK_STREAM, 0); 
    if (sock == SOCKET_ERROR) 
     return 1; 

    int result = connect(sock, (struct sockaddr*)&sockaddr, sizeof(sockaddr)); 
    // result always 0 (success) here 

    closesocket(sock); 

    return 0; 
} 

Ist das ein Fehler? Wenn nicht, wie kann man feststellen, dass der Server tatsächlich online ist? Nur um zu versuchen, die aufgebaute Verbindung zu nutzen (recv/send data)?

Gerät: Windows CE 5.0, WinSock 2.2; Desktop: Windows XP, SP3, ActiveSync 4.5.

Antwort

0

Also, ich habe nicht den Weg gefunden, um zu überprüfen, ob dies "echte" Verbindung ist, außer dieses Problem zu ignorieren und versuchen, diese Verbindung zu verwenden. Wenn es nicht "real" ist, wird die Kommunikation fehlschlagen.

2

Von was IIRC, gibt es einen Fehler in der ActiveSync in der WM 5.0 denkt, dass es immer noch mit dem ActiveSync-Server auf dem Windows-Desktop-PC verbunden ist, siehe diese Antwort hier auf SO, die einen Anhaltspunkt und/oder Einblick bieten könnte in diese und könnte erklären, warum die Socket-Verbindung immer erfolgreich ist ...