2013-07-20 161 views
1

我正試圖創建一個客戶端管理器。我讀過關於套接字的一些信息。我正在做我的第一步,我有第一個問題。連接到smtp服務器窗口C++

這是我的代碼:

 #include <iostream> 
    #include <cstdio> 
    #include <winsock2.h> 
    #include <windows.h> 
    #pragma comment (lib, "ws2_32.lib") 

    using namespace std; 
    const int VERSION_MAJOR = 1; 
    const int VERSION_MINOR = 1; 

    int main() 
    { 
     WSADATA WSData; 
     SOCKET sock; 
     struct sockaddr_in addr; 

     WSAStartup(MAKEWORD(VERSION_MAJOR, VERSION_MINOR), &WSData) 

     sock = socket(AF_INET, SOCK_STREAM, 0); 
     addr.sin_family = AF_INET; 
     addr.sin_port = htons(25); // или любой другой порт... 
     hostent *server_adress = gethostbyname("smtp.gmail.com"); 
     addr.sin_addr.s_addr = *((unsigned long *)server_adress->h_addr_list[0]); 
     int con = connect(sock, (struct sockaddr *) &addr, sizeof(addr)); 
     cout << "connect status " << con << '\n'; 

     return 0; 
    } 

連接()返回-1

爲什麼我無法連接?錯誤在哪裏?

請幫我

+0

如果更改sock = socket(AF_INET,SOCK_STREAM,0),會發生什麼情況; to sock = socket(AF_INET,SOCK_STREAM,IPPROTO_TCP); ? –

+0

@Joseph Pla沒有任何反應。連接()仍然返回-1(((( – andrei

+0

非常奇怪,我在我的機器上得到0)確保你檢查你的互聯網連接 –

回答

2

在下面一行:

sock = socket(AF_INET, SOCK_STREAM, 0); 

不指定一個協議。您應該將其更改爲

sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP); 

這是您希望通過某種方式建立的協議,例如郵件服務。

相關問題