C++ 套接字连接()始终成功(TCP over ActiveSync)

C++ 套接字连接()始终成功(TCP over ActiveSync),c++,c,sockets,windows-mobile,activesync,C++,C,Sockets,Windows Mobile,Activesync,我正在使用TCP/IP over ActiveSync从Windows CE设备连接到Windows XP桌面。 无论桌面服务器应用程序是否实际运行,WinSock connect()函数始终成功 以下简化代码演示了此问题: #include "stdafx.h" #include <Winsock2.h> int _tmain(int argc, _TCHAR* argv[]) { const int Port = 5555; const char * HostN

我正在使用TCP/IP over ActiveSync从Windows CE设备连接到Windows XP桌面。 无论桌面服务器应用程序是否实际运行,WinSock connect()函数始终成功

以下简化代码演示了此问题:

#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;
} 
#包括“stdafx.h”
#包括
int _tmain(int argc,_TCHAR*argv[]
{
常数int端口=5555;
const char*HostName=“ppp_peer”;
WSADATA WSADATA;
if(WSAStartup(MAKEWORD(1,1),&wsadata)!=0)
返回1;
结构hostent*hp=gethostbyname(主机名);
如果(hp==NULL)
返回1;
sockaddr中的结构sockaddr_;
memset(&sockaddr,0,sizeof(sockaddr));
sockaddr.sin_family=AF_INET;
sockaddr.sin_addr.s_addr=((结构在_addr*)(hp->h_addr))->s_addr;
sockaddr.sinu port=htons(端口);
intsock=socket(AF_INET,sock_STREAM,0);
if(sock==SOCKET\u错误)
返回1;
int result=connect(sock,(struct sockaddr*)和sockaddr,sizeof(sockaddr));
//此处的结果始终为0(成功)
插座;
返回0;
} 
这是虫子吗?如果不是,那么确定服务器实际在线的正确方法是什么?仅尝试使用已建立的连接(接收/发送数据)

设备:WindowsCE5.0,Winsock2.2;
桌面:Windows XP、SP3、ActiveSync 4.5。

根据IIRC,ActiveSync中存在一个缺陷,WM 5.0认为它仍然连接到Windows桌面pc上的ActiveSync服务器,请参阅此处的回答,它可能提供了线索和/或见解,并可以解释套接字连接总是成功的原因。

,除了忽略此问题并尝试使用此连接之外,我没有找到检查此连接是否为“真实”连接的方法。如果它不是“真实的”,则通信将失败