简体   繁体   English

套接字connect()总是成功(TCP over ActiveSync)

[英]Socket connect() always succeeds (TCP over ActiveSync)

I'm using TCP/IP over ActiveSync to connect from Windows CE device to Windows XP desktop. 我在ActiveSync上使用TCP / IP从Windows CE设备连接到Windows XP桌面。 The WinSock connect() function always succeeds, no matter whether desktop server application is actually running. 无论桌面服务器应用程序是否实际运行,WinSock connect()函数总是成功。

The following simplified code demonstrates this issue: 以下简化代码演示了此问题:

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

Is this a bug? 这是一个错误吗? If not, what is a correct way to determine that the server is actually online? 如果没有,确定服务器实际在线的正确方法是什么? Only to try to use the established connection (recv/send data)? 只是尝试使用已建立的连接(recv / send data)?

Device: Windows CE 5.0, WinSock 2.2; 设备:Windows CE 5.0,WinSock 2.2; Desktop: Windows XP, SP3, ActiveSync 4.5. 桌面:Windows XP,SP3,ActiveSync 4.5。

从什么IIRC,还有在ActiveSync的错误,该WM 5.0认为它仍然最多连接Windows桌面电脑的ActiveSync服务器,在这里看到这个答案的SO这可能会提供线索和/或洞察到这一点,并能解释为什么socket连接总是成功...

So, I did not find the way to check if this is 'real' connection, other than to ignore this issue and try to use this connection. 所以,我没有找到检查这是否是“真实”连接的方法,除了忽略此问题并尝试使用此连接。 If it is not 'real', the communication will fail. 如果它不是“真实的”,则通信将失败。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM