Windows CE aygıtından Windows XP masaüstüne bağlanmak için ActiveSync üzerinden TCP/IP kullanıyorum. Masaüstü sunucu uygulamasının gerçekten çalışıp çalışmadığı fark etmeksizin WinSock connect() işlevi her zaman başarılı olur.Socket connect() her zaman başarılı olur (ActiveSync üzerinden TCP)
#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;
}
Bu bir hata mı:
aşağıdaki basitleştirilmiş kod, bu sorunun gösterir? Değilse, sunucunun aslında çevrimiçi olduğunu belirlemek için doğru bir yol nedir? Sadece kurulan bağlantıyı kullanmaya çalışmak için (recv/data gönder)?
Cihaz: Windows CE 5,0, WinSock 2.2; Masaüstü: Windows XP, SP3, ActiveSync 4.5.