Perl语言高级编程专题09prn.pdf
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_1.gif)
![资源得分’ title=](/images/score_05.gif)
《Perl语言高级编程专题09prn.pdf》由会员分享,可在线阅读,更多相关《Perl语言高级编程专题09prn.pdf(4页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、1Perl语言高级编程专题Lesson 9周晓方coursesxfzhou.homeftp.orgPerl和网络,Perl和Win322MAC地址,IP地址,端口号 MAC地址:网卡绑定的唯一48bit地址,六段16进制表示 IPv4地址:32bit网际网地址,表示成四段十进制数10.10.10.1 127.x.x.x是localhost,表示本地,用于开发调试 10.x.x.x,172.16-32.x.x,192.168.x.x等用于内网 子网的第一个IP用于路由,最后一个IP用于广播 互联网上IP地址和域名之间有对应关系(DNS)端口号:165535的一个数字,常用协议有固定的端口号(11
2、023)http 80,ftp 21,https 443,smtp 25,pop3 101,etc 每台PC可以装多个网卡,每个网卡对应一个MAC地址,但可绑定多个IP地址,每个IP可以有多个域名3网络常用工具(以Windows为例)ping 域名或IP了解远程机器的相应情况 nslookup 域名或IP 检测DNS信息 tracert 域名或IP列出到达指定IP的路径 netstat p tcp 列出TCP连接的端口号和情况 ipconfig(/all)列出本机网卡的MAC/IP地址等以下这些是微软网络的命令 net share查看本机共享资源 net view/domain查看域、工作组名
3、 net view pc_name 查看其他机器的共享资源4ftp(File Transfer Protocol)入门 命令行ftp的常用命令 open 域名或IP 端口号并输入用户和口令 ls或dir列出远程目录的文件列表 cd/pwd/mkdir改变/显示/创建远程目录 lcd改变本地目录!进入shell bin/ascii传输模式 get/mget name 下载单个文件/一组文件 put/mput name 上传单个文件/一组文件 prompt是否逐一提示(传多个文件时)hash传输文件时是否提示进度 close关闭连接 quit退出5Perl脚本连接ftp站点 面向对象格式,完全摹仿
4、命令行方式$ftp=Net:FTPnew($host,%options,例如port=21等)$success=$ftplogin($user,$password)$ftpbinary/ascii/hash/pwd/ls/dir/cwd(dir)/delete(file)$ftpget(远端文件名,本地文件名,起点)可以断点续传断点续传$ftpput(本地文件名,远端文件名)上传文件 打开句柄读远端文件$fh=$ftpretr(文件)打开句柄写远端文件$fh=$ftpstor(文件)$fh=$ftpappe(文件)远端文件的修改时间$time=$ftpmdtm(file)得到远端文件大小$si
5、ze=$ftpsize(文件)use Net:FTP;#列目录并下载打印index.txt文件use constant HOST=localhost;use constant USER=anonymous;#connect,login,and list directorymy$ftp=Net:FTP-new(HOST)or die$;$ftp-login(USER)or die$;print$ftp-pwd,n;my dir=$ftp-dir;print join(n,dir),n;#download a file and dump to STDOUTmy$fn=index.txt;my$fh
6、=$ftp-retr($fn);warn Cant find$fn if not$fh;print if$fh;$ftp-quit;6Net:FTP的父对象Net:Cmd command($command)方法发送命令ok方法返回成功与否response方法返3位结果码的第一位code方法返回3位数值型结果码message方法返回文本消息结果码在400以上的表示错误信息,例如正常login一个ftp服务器后会有类似这样的反馈:331 Anonymous access ok:give e-mail address as passwordPassword:*230 User anonymous l
7、ogged-in(续上页)断点续传下载的一种写法:$offset=(stat($file)7|0;#如果文件大小0则续传$ftp get($file,$file,$offset);如何透过防火墙/代理访问ftp:参考Net:Config7发邮件的协议SMTP:25 下面是一次SMTP(Simple Mail Transfer Protocol)对话:C:telnet 25220 Welcome to RaidenMAILDSMTP service v1903,Wed,26 May 2004 13:21:40+0800,(C)2001-2003HELO my_250 my_mail from:u
8、serA250(EMPTY)Sender OKrcpt to:250 userB recipient verifieddata354 start mail input;end with.hello!.250 mail received,ready to proceed.quit221 RaidenMAILD SMTP service signing off失去了跟主机的连接。C:_连接SMTP服务器打招呼,告知域名告知发件人邮箱告知收件人邮箱开始写信信的内容.表示信结束礼貌地退出C:_220连接成功250好的250邮箱正确250邮箱正确354写信提示250信收到221服务结束8收邮件的协议PO
9、P3:110 下面是一次POP3(Post Office Protocol 3)对话:C:telnet 110+OK Welcome to RaidenMAILD POP3 service v1903,Wed,26 May 2004 13:51:56+0800,(C)2001-2003user USER2+OK USER USER2 OKpass*+OK Password OK,enter mailbox now.list+OK 1 1121 112.retr 1+OK 112 octetsReceived:from local(192.168.11.111)by RaidenMAILD(10
10、.11.11.1);Wed,26 May 2004 13:24:58+0800hello!.dele 1+OK mail 1 deletedquit+OK RaidenMAILD POP3 service signing off失去了跟主机的连接。C:_连接POP3服务器登录 用户名登录 口令列出所有邮件看第1封信删除第1封信礼貌地退出C:_+OK连接成功+OK有这个用户+OK登录成功+OK有1封信编号、长度来源和日期信的内容+OK删除成功+OK结束服务9用Perl发信(no spam,严禁发送垃圾信件)Net:SMTP的例子#!/usr/bin/perl-wuse strict;use Ne
11、t:SMTP;use constant HOST=你的SMTP邮箱服务器地址;use constant USER=你的用户名;use constant SENDER=发信人域名;use constant RECIPIENT=收信人域名;my$smtp=Net:SMTP-new(HOST);#-SMTP需要身份认证?-print Authenticate Password for .USER.:;my$password=;chomp$password;$smtp-auth(USER,$password);#-开始发信-$smtp-mail(SENDER);$smtp-recipient(RECI
12、PIENT);#可以同时给多人($addr1,$addr2,$addr3.)$smtp-data(quit;10用Perl发信(II)身份认证需要安装Authen:SASL模块,见CPAN$smtpauth(用户名,密码);数据可以分多段发送,并发送信封:$smtpdata();$smtpdatasend(From:发方n,To:收方n,Subject:主题subjectn;$smtpdatasend(data);#可分多次调用datasend$smtpdataend;#表示信体结束 可以在quit之前反复$smtpmail()发送多封信件 发送带附件的信要用到MIME:Tool或者MIME:
13、Lite等模块11用Net:POP3收信$pop3=Net:POP3new(服务器地址)#连接$message=$pop3login(用户名,密码)#登录$last=$poplast#消息编号是1$last,如果$last=1$popdelete(消息编号)#给消息做删除标记,quit时才删除$popreset#复位,取消所有的删除标记$hashref=$poplist#返回散列引用,(消息编号长度)$size=$poplist(消息编号)#返回指定消息的长度$arrayref=$popget(消息编号)#读取消息,返回数组引用$handle=$popgetfh(消息编号)#读取消息,返回可读
14、句柄print$popquit#退出12用Net:HTTP下载网页 下载三个网页(超文本,jpeg,错误连接)并显示use Net:HTTP;my($path,$http,$code,$mess,%h,$buf,$n);$http=Net:HTTP-new(Host=animal.vine.homedns.org,KeepAlive=1)or die$;foreach$path(/,/041/04131A.jpg,/bad)$http-write_request(GET=$path,User-Agent=Mozilla/5.0);($code,$mess,%h)=$http-read_resp
15、onse_headers;print STDERR$pathncode:$code,mess:$mess,hash pairs:n;print STDERR$k=$vn while($k,$v)=each%h;print-n;next if$code ne 200;binmode STDOUT;while(1)$buf;$n=$http-read_entity_body($buf,1024);die read failed:$!unless defined$n;last unless$n;print$buf;print n=nn;13运行结果 注意Code/mess/%h的返回值连接超文本连接
16、超文本/code:200,mess:Ok,hash pairs:Content-Type=text/htmlConnection=Keep-AliveLast-Modified=Sat,31 Jan 2004 13:47:34 GMTServer=Xitami/ProContent-Length=521Keep-Alive=timeout=30,max=25-Jan,(以下省略,共521字节)=连接连接JPEG二进制图像二进制图像/041/04131A.jpgcode:200,mess:Ok,hash pairs:Content-Type=image/jpegConnection=Keep-A
17、liveLast-Modified=Sun,08 Feb 2004 07:56:10 GMTServer=Xitami/ProContent-Length=12073Keep-Alive=timeout=30,max=25-?JFIF(二进制内容,以下省略,共12073字节)连接无效网页时/badcode:404,mess:Not found,hash pairs:Content-Type=text/htmlServer=Xitami/ProContent-Length=117-14ActivePerl的Win32模块 使用ActivePerl,程序增加use Win32;错误编号和错误字符串
18、(Win32有时不用$!)Win32:GetLastError()Win32:FormatMessage(Win32:GetLastError()操作系统的版本信息($serive_pack,$major,$minor,$build,$platform_id)=Win32:GetOSVersion()其中platform_id,0=win32,1=win9x,2=winnt 判断Win类型 Win32:IsWinNT(),Win32:IsWin95()Perl的编号:$PerlBuild=Win32:BuildNumber();15实例version.pl某某XP上运行的结果上运行的结果Win
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Perl 语言 高级 编程 专题 09 prn
![提示](https://www.taowenge.com/images/bang_tan.gif)
限制150内