序言
坚信我们都有过被C词汇互联网程式设计所主宰的绝望吧?只不过,小贴士在才刚自学这点的科学知识的这时候也有这样的体会,因此大部份的数据资料都从互联网找寻的,但,现在我相同了,即使这首诗Sonbhadra带我一点一点地,写下我第二个采用SMTP协定来推送电子邮件的C词汇流程,那个和小贴士刚自学的这时候可相同呀!
该文结尾有归纳,这是一脉相承哦
嘿嘿,URL写出来!
具体来说,这首诗不是讲方法论的该文,而要让我亲自动手课堂教学的该文,目地是让诸位看客能亲自动手写下能载入功、能获得成功运转、能获得成功推送电子邮件的C词汇流程,这首诗不能牵涉太少的方法论科学知识,因此URL也没有历经不光的PCB,意在让诸位看客能编写下那个流程,因此看客跟著该文亲自DIY就可以了。
第二步
具体来说,提及stdio.h、winsock2.h、windows.h(惯常,Nenon讲到),不光注意,这儿有一个地方性有许多人能手忙脚乱,假如你要提及windows.h不然,就得在提及winsock2.h后就可以提及windows.h,不然会出现enumURL的情形,如下表所示图↓
这是恰当读法
错误读法
按照错误读法进行调试不然,会出现以下错误提示↓
错误提示
然后我们再声明一个变量和两个函数,变量是用来储存服务器返回的数据的,两个函数分别是用来创建套接字(socket)和接收服务器返回数据的,这儿我们声明了一个字符型数组,数组大小我们用BUFSIZ代替,这儿有人就会问了:为什么用BUFSIZ作为数组大小呢?,答案是:减轻系统负担,不理解?没关系,先把URL运转出来,然后再慢慢研究。
除了以上步骤,我们还需要写入以下两行URL,加入两个库文件,其中User32.lib是惯常的,加入User32.lib只是为了能够调用MessageBox()函数而已。
到这儿,我们的第二步完成了!接下来是第二步
第二步
初始化
前期的准备工作做好了,我们现在开始编写我们要用到的函数——socket_connect_server(void),从字面的意思上来看,我们都应该明白那个函数是干嘛的吧?没错,它是用来创建套接字并连接SMTP服务器的。
我们要创建一个套接字,初始化完成后,我们要把它记在某个地方性,要不然忘记了怎么办?因此我们要声明一个变量来存放套接字初始化后的数据——WSADATA wd,wd就是用来存放这些数据的变量。
好了,我们用到的主要变量已经声明完毕,接下来要初始化,我们要向编译器说明,我们要用到Ws2_32.lib和Winsock2.h中的哪个库文件(简单来说就是初始化而已),如图,URL可以这么写↓
创建套接字
开始创建socket,这儿我们要用到socket()函数,socket()需要三个参数,但一般情形下,按照图中的URL写也是可以的,因此,这行URL诸位看客照抄就行了!只不过,这三个参数很容易理解,这儿就不搬书了。
输入服务器信息
这儿解释一下inet_addr()函数,它的机能是将一个点分十进制的IP转换成一个长整数型数(u_long类型),说白了,就是数据类型转换,将IP地址的数据类型成能够存到addr那个结构体的数据类型。
还有一个htons()函数,它的作用是将括号里面的数值,转化成互联网字节顺序(TCP/IP中规定数据表现形式),简单点讲,就是将括号里面的数值转化成另一种表现形式。
连接服务器
套接字有了,服务器也有了,接下来要干嘛呢?那就是连接服务器!连接服务器我们要用到connet()函数而不是bind()函数,这儿简单的记一下connet()用在客户端,bind()用在服务器。
这儿跟我们说一下,connet()函数其中第二个参数是SOCKADDR类型,而我们这儿为什么用SOCKADDR_IN类型呢?请看下图↓
SOCKADDR_IN强制转换成SOCKADDR类型
图中的URL将smtp邮箱IP地址存放在SOCKADDR_IN的S_addr成员中,然后再将端口号放在sin_port成员中,分开进行,而SOCKADDR就不一样了,它将IP地址和端口号一起放在sa_data[14]那个成员中,这样看来SOCKADDR是一种通用的套接字地址,SOCKADDR_IN是internet环境下套接字的地址形式。说白了,就是SOCKADDR_IN更适合用于互联网程式设计,记住这句话就对了!
第三步
就是我们的recv_show()函数,那个函数比较简单,这儿就不多说了,照抄!
服务器已经连接了、接收数据并打印的函数也有了,接下来就是按照SMTP协定推送数据
这儿会用到send()函数,它有三个参数,分别是已连接的socket、推送的字符串、推送字符串长度、调用执行方式(一般为0)。
URL书写示例:send(socket_use,”推送的数据\r\n”,strlen(“推送的数据\r\n”),0),为什么后面会有\r\n?那个跟SMTP协定有关,\r\n与CMD命令行推送电子邮件时的回车效果一样。
不光注意:
推送的账号、密码要通过base64加密,不能如何加密?那么,请百度搜索:base64推送和接收的邮箱要开启smtp服务!发件人和收件人可以是同一个邮箱推送电子邮件的最后三行语句不光重要,不光注意格式(该文结尾有)
接下来就是按照SMTP协定来推送数据和接收数据了
如图,参照CMD命令通过SMTP协定推送电子邮件的实例,来写C词汇推送电子邮件的URL↓
CMD推送电子邮件的过程
举个例子,我们第二步要推送helo 163.com,那么,我们用C词汇推送是这样的,send(socket_use,”helo 163.com\r\n”,strlen(“helo 163.com\r\n”),0),按照这行URL,以此类推写下去,然后再用recv_show()输出服务器应答的信息。
不光注意这三行C词汇URL,跟CMD发电子邮件过程对比以下↓
最后
这是流程运转后的结果
以下是全部URL↓
2.分享目的仅供大家学习和交流,您必须在下载后24小时内删除!
3.不得使用于非法商业用途,不得违反国家法律。否则后果自负!
4.本站提供的源码、模板、插件等其他资源,都不包含技术服务请大家谅解!
5.如有链接无法下载或失效,请联系管理员处理!
6.本站资源售价只是赞助,收取费用仅维持本站的日常运营所需!