2009-06-09 3 views

Répondre

1

Si en travaillant, vous voulez dire ouvert, vous pouvez simplement vous connecter au port et voir si le socket s'ouvre avec succès. Si vous voulez dire qu'il accepte le protocole SMTP sur SSL valide, vous aurez besoin d'une bibliothèque qui se connecte et émet une commande SMTP triviale comme HELO ou quelque chose comme ça.

Chilkat possède un code de bibliothèque et des exemples pour cela.

Exemple connecter code pour win32:

#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

Lorsque vous essayez de vous connecter au serveur par ping tout ce que j'obtiens est un délai, mais le serveur fonctionne. –

+0

Merci, mais Chilkat est de 20 Meg bibliothèque, un peu exagéré :) –

+0

Si vous essayez juste de répliquer ping, puis ouvrez une socket à ce port et voir si elle se connecte. –

1

Assurez une connexion SSL au serveur SMTP et essayez de lire une ligne du flux. Le serveur doit envoyer un message d'accueil dès que vous établissez une connexion comme "220 smtp.domain.com"

+0

Ne pas oublier de se connecter sur un lien SSL si vous le faites .. :) –

+0

dit que ce serait une donnée, mais mis à jour mon répondez pour plus de clarté. – Gerald

Questions connexes