连接到 smtp 服务器 Windows C++

问题描述 投票:0回答:1

我正在尝试创建一个客户经理。我读过一些有关套接字的信息。我正在迈出第一步,但我遇到了第一个问题。

这是我的代码:

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

connect() 返回 -1

为什么我无法连接?哪里出错了?

请帮助我

c++ sockets smtp
1个回答
2
投票

在以下行中:

sock = socket(AF_INET, SOCK_STREAM, 0);

您没有指定协议。你应该将其更改为

sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);

这是您想要与邮件服务等内容建立的协议。

© www.soinside.com 2019 - 2024. All rights reserved.