试图通过C ++中的套接字进行连接,但没有成功
Trying to make a connect go gmail imap through sockets in c++ but without success
我正在尝试通过 C++ 中的套接字连接到 Gmail...我似乎没有让Gmail回复* OK消息
这是我的代码
#include "stdafx.h"
#include "Client.h"
#include <WinSock2.h>
#include <Windows.h>
#include <iostream>
#define SCK_VERSION1 0x0101 //version 1 of winsock
#define SCK_VERSIOM2 0x0202 //version 2 of winsock
using namespace std;
int _tmain(int argc, _TCHAR* argv[])
{
long Successful;
WSAData WinSockData;
WORD DLLVERSION=MAKEWORD(2,1);
Successful=WSAStartup(DLLVERSION,&WinSockData);
char MESSAGE[1024]="",MESSAGE1[1024]="";
SOCKADDR_IN ADDRESS;
SOCKET Sock;
Sock=socket(AF_INET, SOCK_STREAM, IPPROTO_IP);//socket(AF_INET,SOCK_STREAM,NULL);
struct hostent *host;
host=gethostbyname("smtp.gmail.com");
ADDRESS.sin_addr.s
_addr=*((unsigned long *)host->h_addr_list[0]);//inet_addr(Ip);
ADDRESS.sin_family=AF_INET;
ADDRESS.sin_port=htons(993);
cout<<"connecting..."<<endl;
if(connect(Sock,(SOCKADDR*) &ADDRESS,sizeof(ADDRESS))!=0){
cout<<WSAGetLastError()<<endl; //if there was an error then print it out
}
else{
cout<<"connected"<<endl;
int DataEnd=0;
do{
long Successful=recv(Sock,MESSAGE1,sizeof(MESSAGE1)/sizeof(char),NULL); //the listen if he got all
strcat_s(MESSAGE,MESSAGE1);
cout<<MESSAGE1;
for(int i=0;i<1024;i++){
if(MESSAGE[i]==' '){
DataEnd=1;
break;
}
}
}while(DataEnd==0);
cout<<MESSAGE<<endl;
for(int i=0;i<=(int)strlen(MESSAGE);i++){
MESSAGE[i]=' ';
}
Successful= send(Sock,"a1 login mail@gmail.com passrn",(int)strlen("a1 login mail@gmail.com passrn"),NULL);
DataEnd=0;
do{
long Successful=recv(Sock,MESSAGE1,sizeof(MESSAGE1)/sizeof(char),NULL); //the listen if he got all
strcat_s(MESSAGE,MESSAGE1);
for(int i=0;i<1024;i++){
if(MESSAGE[i]==' '){
DataEnd=1;
break;
}
}
}while(DataEnd==0);
cout<<MESSAGE<<endl;
for(int i=0;i<=(int)strlen(MESSAGE);i++){
MESSAGE[i]=' ';
}
Successful= send(Sock,"a2 SELECT INBOXrn",(int)strlen("a2 SELECT INBOXrn")+1,NULL);
DataEnd=0;
do{
long Successful=recv(Sock,MESSAGE1,sizeof(MESSAGE1)/sizeof(char),NULL); //the listen if he got all
strcat_s(MESSAGE,MESSAGE1);
for(int i=0;i<1024;i++){
if(MESSAGE[i]==' '){
DataEnd=1;
break;
}
}
}while(DataEnd==0);
cout<<MESSAGE<<endl;
for(int i=0;i<=(int)strlen(MESSAGE);i++){
MESSAGE[i]=' ';
}
system("PAUSE");
}
cout<<endl;
system("PAUSE");
return 0;
}
但我得到的输出是
连接。。。 连接
然后它阻止在这里...似乎Gmail没有回复"* OK"消息 我做错了什么
两个问题:
- 您正在连接到
smtp.gmail.com
,它不托管 IMAP 服务。 你需要imap.gmail.com
. - 端口 993 受 TLS 保护。 您将需要使用安全套接字来连接到它。 使用普通套接字连接不会得到任何东西,因为它正在等待您进行SSL/TLS协商。
相关文章:
- cmake在我的项目中所需的所有静态库都不成功
- 尽管测试成功,CppUnit测试核心仍被丢弃.为什么
- 当套接字连接断开时检测C/C++Unix
- 如何让LLDB在成功时退出,在失败时等待
- 有没有办法知道Tracer是否成功地完全连接到了jaegerclientcpp中的jaeger后端服务器
- 无法在windows上使用mingw将sqlite3与c连接
- 为什么 WinInet 在通过 FQDN 连接时无法通过协商自动进行身份验证,但如果通过 IP 连接则成功?
- 连接四个成功的组合检查适用于大多数情况,但不适用于某些情况
- UDP 连接始终成功
- QTcpSocket 在几次连接成功后发出"Connection Refused Error"?
- 试图通过C ++中的套接字进行连接,但没有成功
- C++ODBC检查连接是否成功
- 尽管连接成功,但未调用插槽
- 客户端套接字连接() 在服务器 accept() 超时后成功
- 即使连接不再可用,发送也会成功
- 在多次成功连接之后,c++停止连接到DB
- 如何确保在关闭连接之前成功发布最后一条AMQP消息
- 客户端连接()失败,服务器端接受()成功.为什么
- QTcpClient成功连接,但未连接到我的服务器.它在哪里连接
- Boost asio SSL -连接成功后尝试发送请求