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

📄 inetsocket.cpp

📁 LINUX下发送邮件的库,测试很好用,有各种发送测试的例子
💻 CPP
字号:
/************************************************************************* *                                                                       * * This program is free software; you can redistribute it and/or modify  * * it under the terms of the GNU General Public License as published by  * * the Free Software Foundation; either version 2 of the License, or     * * (at your option) any later version.                                   * *                                                                       * *************************************************************************/#include "inetsocket.h"/** * Constructor. * * @param host The host this socket should connect. * @param port The port this socket should connect. */InetSocket::InetSocket		( 			const string &host, 			int port		) : SSLSocket (host){		this->port = port;}/** * Constructor. * * @param host The host this socket should connect. * @param port The port this socket should connect. * @param fd   The file descriptor this socket uses for IO. */InetSocket::InetSocket		( 		 	int fd,			const string &host,			int port		) : SSLSocket (host,fd){		this->port = port;}/** * Destructor. */InetSocket::~InetSocket () {}/** * Open the socket. * * @throws TransferException *                    If the connection to the host cannot be *                    established. */void InetSocket::connect (){	struct hostent     *servp;	struct sockaddr_in  addr;	servp = gethostbyname (this->host.c_str ());	if (servp == NULL)	{         		string msg;		switch (h_errno)		{			case HOST_NOT_FOUND:				msg = LIBSMTP_I18N_1 ("The specified host is unknown.");				throw (TransferException (msg, "InetSocket::connect()", 1));				break;			case NO_ADDRESS:				msg  = LIBSMTP_I18N_1 ("The requested name is valid but does not have an IP address.");				throw (TransferException (msg, "InetSocket::connect()", 2));				break;			case NO_RECOVERY:				msg = LIBSMTP_I18N_1 ("A non-recoverable name server error occurred.");				throw (TransferException (msg, "InetSocket::connect()", 3));				break;			case TRY_AGAIN:				msg  =  LIBSMTP_I18N_1 ("A temporary error occurred on an authoritative name server.");				msg  += " " + LIBSMTP_I18N_1 ("Try again later.");				throw (TransferException (msg, "InetSocket::connect()", 4));				break;		}	}	if ((this->sockfd = socket (AF_INET, SOCK_STREAM, 0)) == -1)	{		throw (TransferException (strerror (errno), "InetSocket::connect()", 5));	}	addr.sin_family = AF_INET;	addr.sin_port   = htons (this->port);	addr.sin_addr   = *((struct in_addr *)servp->h_addr);	bzero (&(addr.sin_zero), 8); 	if (::connect (this->sockfd, (struct sockaddr *)&addr, sizeof (struct sockaddr)) == -1)	{		throw (TransferException (strerror (errno), "InetSocket::connect()", 6));	}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -