⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mysocket.cpp

📁 一个在redhat下面做的邮件收发程序
💻 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 + -