2009-06-09 4 views

Antwort

1

Wenn Sie mit "open" arbeiten, können Sie einfach eine Verbindung zum Port herstellen und sehen, ob der Socket erfolgreich geöffnet wird.

Wenn Sie meinen, dass es gültiges SMTP über SSL akzeptiert, dann benötigen Sie eine Bibliothek, die eine Verbindung herstellt und einen trivialen SMTP-Befehl wie HELO oder etwas ausgibt.

Chilkat hat Bibliothekscode und Beispiele dafür.

Beispielcode für win32 verbinden:

#include <winsock2.h> 
#include <ws2tcpip.h> 
#include <wspiapi.h> 

void tryconnect(const char * host, const char * port) 
{ 
    SOCKET Socket = INVALID_SOCKET; 
    struct addrinfo *resAddrInfo = NULL; 
    struct addrinfo *ptr = NULL; 
    struct addrinfo hints; 
    int result = 0; 

    printf("Connecting to %s:%s\n", host, port); 

    ZeroMemory(&hints, sizeof(hints)); 
    hints.ai_family = AF_UNSPEC; 
    hints.ai_socktype = SOCK_STREAM; 
    hints.ai_protocol = IPPROTO_TCP; 

    result = getaddrinfo(host, port, &hints, &resAddrInfo); 
    if (result != 0) 
    { 
     printError("getaddrinfo failed"); 
     return; 
    } 

    ptr = resAddrInfo; 
    Socket = WSASocket(ptr->ai_family, ptr->ai_socktype, ptr->ai_protocol, NULL, 0, WSA_FLAG_OVERLAPPED); 
    if (Socket == INVALID_SOCKET) 
    { 
     printError("Error Creating Socket"); 
     freeaddrinfo(resAddrInfo); 
     return; 
    } 

    result = WSAConnect(Socket, ptr->ai_addr, (int)ptr->ai_addrlen, NULL, NULL, NULL, NULL); 
    if (result != 0) 
    { 
     printError("Error Connecting"); 
     closesocket(Socket); 
     freeaddrinfo(resAddrInfo); 
     return; 
    } 

    freeaddrinfo(resAddrInfo); 
    printf("Success!\n\n"); 
} 
+0

herstellen Wenn ein Versuch, eine Verbindung mit dem Server durch Ping alles, was ich bekomme, ist ein Timeout, aber der Server funktioniert. –

+0

Danke, aber Chilkat ist 20 Megabyte-Bibliothek, ein bisschen Overkill :) –

+0

Wenn Sie nur versuchen, Ping zu replizieren, dann öffnen Sie einen Socket für diesen Port und sehen, ob es verbindet. –

1

nur eine SSL-Verbindung zum SMTP-Server machen und versucht, eine Zeile aus dem Stream zu lesen. Der Server sollte eine Grußnachricht senden, sobald Sie eine Verbindung wie "220 smtp.domain.com"

+0

keine SSL-Verbindung zu verbinden über Vergessen Sie, wenn Sie dies tun .. :) –

+0

Figured, dass eine gegeben wurde, aber aktualisiert meine Antwort für Klarheit. – Gerald

Verwandte Themen