gpt4 book ai didi

c++ - 使用C/C++(套接字)连接到Gmail SMTP服务器

转载 作者:行者123 更新时间:2023-12-03 07:21:53 25 4
gpt4 key购买 nike

我尝试用纯套接字连接到Google SMTP服务器(“smtp.gmail.com”)。
我创建了一个套接字,当我读取数据仅给我“54”或“52”或“53”或“54”时连接。

    sockaddr_in service;
WSADATA wsaData;

struct hostent* remoteHost;

int result = WSAStartup(MAKEWORD(2, 2), &wsaData);
if (result != NO_ERROR) {
std::cout << 1;
return EXIT_FAILURE;
}

sock = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP);
if (sock == INVALID_SOCKET) {
WSACleanup;
return EXIT_FAILURE;
}

remoteHost = gethostbyname(SMTP_HOST);

memset(&service, 0, sizeof(service));
service.sin_family = AF_INET;
service.sin_addr.s_addr = *(u_long*)remoteHost->h_addr_list[0];
service.sin_port = htons(25);


if (connect(sock, (SOCKADDR*)&service, sizeof(service)) == SOCKET_ERROR) {
WSACleanup;
return EXIT_FAILURE;
}

char senddata[] = "STARTTLS";

read_socket();
send(sock, EHLO, strlen(EHLO), 0);
read_socket();
send(sock, senddata, strlen(senddata), 0);

std::cout << 0;
return EXIT_SUCCESS;
我的read_socket函数
void read_socket() {
int bytesRecv = recv(sock, recvbuf, BUFSIZ, 0);

if (bytesRecv == 0 || bytesRecv == WSAECONNRESET) {
std::cout << "Connection closed"<<std::endl;
return;
}

std::cout << bytesRecv << std::endl;
}
编辑:添加read_socket函数。

最佳答案

recv将缓冲区作为参数并返回接收到的字节数,代码中的bytesRecv是接收到的字节数(54字节)而不是字节,以查找Google回答的问题,您需要显示recvbuf

std::cout << recvbuf << std::endl;

关于c++ - 使用C/C++(套接字)连接到Gmail SMTP服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64872783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com