PHP Socket编程介绍

PHP Socket编程介绍

ID:41032790

大小:22.33 KB

页数:9页

时间:2019-08-14

PHP Socket编程介绍_第1页
PHP Socket编程介绍_第2页
PHP Socket编程介绍_第3页
PHP Socket编程介绍_第4页
PHP Socket编程介绍_第5页
资源描述:

《PHP Socket编程介绍》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Socket编程介绍向大家申明,本人不是一个TCP/IP编程专家,故在此只是讲出了我的一点理解和体会。使用fsockopen函数打开一个Internet连接,函数语法格式:intfsockopen(stringhostname,intport,int[errno],string[errstr],int[timeout]);参数的意思我想不用讲了,这里由于要使用SMTP协议,所以端口号为25。在打开连接成功后,会返回一个socket句柄,使用它就可以象使用文件句柄一样的。可使用的操作有fputs(),fgets(),feof

2、(),fclose()等。很简单地介绍就到这里吧。SMTP的基础基于TCP/IP的因特网协议一般的命令格式都是通过请求/应答方式实现的,采用的都是文本信息,所以处理起来要容易一些。SMTP是简单邮件传输协议的简称,它可以实现客户端向服务器发送邮件的功能。所以下面所讲的命令是指客户端向服务器发出请求指令,而响应则是指服务器返回给客户端的信息。SMTP分为命令头和信息体两部分。命令头主要完成客户端与服务器的连接,验证等。整个过程由多条命令组成。每个命令发到服务器后,由服务器给出响应信息,一般为3位数字的响应码和响应文本。不同的

3、服务器返回的响应码是遵守协议的,但是响应正文本则不必。每个命令及响应的最后都有一个回车符,这样使用fputs()和fgets()就可以进行命令与响应的处理了。SMTP的命令及响应信息都是单行的。信息体则是邮件的正文部分,最后的结束行应以单独的"."作为结束行。客户端一些常用的SMTP指令为:HELOhostname:与服务器打招呼并告知客户端使用的机器名字,可以随便填写MAILFROM:sender_id:告诉服务器发信人的地址RCPTTO:receiver_id:告诉服务器收信人的地址DATA:下面开始传输信件内容,且最

4、后要以只含有.的特殊行结束RESET:取消刚才的指令,从新开始VERIFYuserid:校验帐号是否存在(此指令为可选指令,服务器可能不支持)QUIT:退出连接,结束服务器返回的响应信息为(格式为:响应码+空格+解释):220服务就绪(在socket连接成功时,会返回此信息)221正在处理250请求邮件动作正确,完成(HELO,MAILFROM,RCPTTO,QUIT指令执行成功会返回此信息)354开始发送数据,结束以.(DATA指令执行成功会返回此信息,客户端应发送信息)500语法错误,命令不能识别550命令不能执行,邮

5、箱无效552中断处理:用户超出文件空间下面给出一个简单的命令头(这是在打开socket之后做的),是我向stmp.263.net发邮件的测试结果:HELOlimodou250smtp.263.netMAILFROM:chatme@263.net250OkRCPTTO:chatme@263.net250OkDATA354Enddatawith.To:chatme@263.netFrom:chatme@263.netSubject:testFrom:chatme@263.nettest.QUIT250Ok:queuedasC4

6、6411C5097E0这就是一些SMTP的简单知识。相关内容可以查阅RFC。RFC821定义了收/发电子邮件的相关指令。RFC822则制定了邮件內容的格式。RFC2045-2048制定了多媒体邮件內容的格式,RFC1113,1422-1424则是讨论如何增进电子邮件的保密性。send_mail类的实现现在开始介绍我所编写的发送邮件类。有了上面的预备知识了,下面就是实现了。类的成员变量var$lastmessage;//记录最后返回的响应信息var$lastact;//最后的动作,字符串形式var$welcome;//用在H

7、ELO后面,欢迎用户var$debug;//是否显示调试信息var$smtp;//smtp服务器var$port;//smtp端口号var$fp;//socket句柄其中,$lastmessage和$lastact用于记录最后一次响应信息及执行的命令,当出错时,用户可以使用它们。为了测试需要,我还定义了$debug变量,当其值为true时,会在运行过程中显示一些执行信息,否则无任何输出。$fp用于保存打开后的socket句柄。类的构造---------------------------------------------

8、-----------------------------------functionsend_mail($smtp,$welcome="",$debug=false){if(empty($smtp))die("SMTPcanntbeNULL!");$this->smtp=$smtp;if(empty(

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。