📄 mysocket.cpp
字号:
//MySocket.cpp#include <iostream>#include <cstring>#include <stdio.h>#include <stdlib.h>#include <cstring>#include <sys/types.h>#include <netdb.h>#include <sys/socket.h>#include "MySocket.h"#include "base64.h"using namespace std;//初始化socket并且进行连接int MySocket::InitMySocket(const char* hostname,int port){ struct sockaddr_in host; struct hostent *hp; sock=socket(AF_INET,SOCK_STREAM,0); if(sock < 0) { SetErr("open stream socket error!"); return -1; } hp=gethostbyname(hostname); if(hp==0) { SetErr("get host address error!"); return -1; } host.sin_family = AF_INET; host.sin_port = htons(port); memcpy((char*)&host.sin_addr,(char*)hp->h_addr,hp->h_length); if(connect(sock,(struct sockaddr*)&host,sizeof(host)) < 0) { SetErr("connect error!"); return -1; } return 1;}int MySocket::SendData(const char* data){ if(send(sock,data,strlen(data),0) < 0) { SetErr("send data error!"); return -1; } return 1;}int MySocket::SendData(const char* data,size_t len){ int rtn = send(sock,data,len,0); if(rtn < 0) { SetErr("send data error!"); return -1; } return 1;}int MySocket::RecvData(char* data){ if(recv(sock,data,256,0) < 0) { SetErr("receive data error!"); return -1; } return 1;}int MySocket::CloseMySocket(){ if(sock) { //close(sock); } return 1;}int MySocket::SetErr(char* error){ ErrMsg = error;}string MySocket::GetErr(){ return ErrMsg;}int VerifyResponse(MySocket mysock){ int code; char buf[BUF_SIZE]; char Rcode[3]; for(int i=0;i<BUF_SIZE;i++) { buf[i] = '\0'; } mysock.RecvData(buf); strncpy(Rcode,buf,3); code = atoi(Rcode); return code;}/*main() { char buf[BUF_SIZE]; char* username_t = "EricCN"; //RXJpY0NO char* password_t = "2218059"; //MjIxODA1OQ== char username[BUF_SIZE],password[BUF_SIZE]; Base64 m_code; m_code.Encode(buf,username_t,strlen(username_t)); strcpy(username,buf); strcat(username,"\r\n"); m_code.Encode(buf,password_t,strlen(password_t)); strcpy(password,buf); strcat(password,"\r\n"); MySocket m_mysock; m_mysock.InitMySocket("smtp.126.com",25); for(int i = 0;i < BUF_SIZE;i++) buf[i] = '\0'; m_mysock.RecvData(buf); cout << "Connect: " << buf << "\n"; sprintf(buf,"EHLO HELO\r\n"); m_mysock.SendData(buf); for(int i = 0;i < BUF_SIZE;i++) buf[i] = '\0'; m_mysock.RecvData(buf); cout << "HELO:" << buf << "\n"; for(int i=0 ;i < BUF_SIZE;i++) buf[i] = '\0'; sprintf(buf,"AUTH LOGIN\r\n"); m_mysock.SendData(buf); for(int i=0 ;i < BUF_SIZE;i++) buf[i] = '\0'; m_mysock.RecvData(buf); cout << "AUTH LOGIN:" << buf << "\n"; for(int i=0 ;i < BUF_SIZE;i++) buf[i] = '\0'; sprintf(buf,username); m_mysock.SendData(buf); for(int i=0 ;i < BUF_SIZE;i++) buf[i] = '\0'; m_mysock.RecvData(buf); cout << "USERNAME:" << buf << "\n"; for(int i=0 ;i < BUF_SIZE;i++) buf[i] = '\0'; sprintf(buf,password); m_mysock.SendData(buf); for(int i=0 ;i < BUF_SIZE;i++) buf[i] = '\0'; m_mysock.RecvData(buf); cout << "PASS: " << buf << "\n"; for(int i=0 ;i < BUF_SIZE;i++) buf[i] = '\0'; sprintf(buf,"MAIL FROM: %s\r\n","EricCN@126.com"); m_mysock.SendData(buf); for(int i = 0;i < BUF_SIZE;i++) buf[i] = '\0'; m_mysock.RecvData(buf); cout << "MAIL FROM:" << buf << "\n"; for(int i = 0;i < BUF_SIZE;i++) buf[i] = '\0'; sprintf(buf,"RCPT TO: %s\r\n","EricCN@126.com"); m_mysock.SendData(buf); for(int i = 0;i < BUF_SIZE;i++) buf[i] = '\0'; m_mysock.RecvData(buf); cout << "RCPT TO: " << buf << "\n"; for(int i = 0;i < BUF_SIZE;i++) buf[i] = '\0'; sprintf(buf,"DATA\r\n"); m_mysock.SendData(buf); for(int i = 0;i < BUF_SIZE;i++) buf[i] = '\0'; m_mysock.RecvData(buf); cout << "DATA: " << buf << "\n"; for(int i = 0;i < BUF_SIZE;i++) buf[i] = '\0'; sprintf(buf,"To: %s\r\nFrom: %s\r\nSubject: %s\r\nFrom: %s\r\n%s\r\n.\r\n","EricCN@126.com","EricCN@126.com","subject test","EriCN@126.com","content!"); m_mysock.SendData(buf); for(int i = 0;i < BUF_SIZE;i++) buf[i] = '\0'; m_mysock.RecvData(buf); cout << "Content:" << buf << "\n"; for(int i = 0;i < BUF_SIZE;i++) buf[i] = '\0'; sprintf(buf,"QUIT"); m_mysock.SendData(buf); for(int i = 0;i < BUF_SIZE;i++) buf[i] = '\0'; m_mysock.RecvData(buf); cout << "QUIT: " << buf << "\n"; cout << "complete!\n"; }*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -