- 帖子
- 75
- 精华
- 1
- 积分
- 373
- 阅读权限
- 30
- 注册时间
- 2013-12-20
- 最后登录
- 2015-6-24
|
本帖最后由 今天手气不错啊 于 2013-12-26 17:28 编辑
原文地址:http://www.cnblogs.com/cacique/archive/2012/08/24/2653686.html
什么是网络客户端? 首先,我们把因特网简化成一个数据中心,数据交换的参与者是一个服务提供者和一个服务使用者。类似于“生产者-消费者”这里 服务器就是生产者,它提供服务,一般只有一个服务器喝多个消费者,就像我们之前看道德客户端/服务器模型那样。 这里主要介绍三个网际协议---FTP、NNTP和POP3 文件传输协议--FTP FTP是internet上文件传输、软件和源代码下载的主要手段之一。FTP要求输入用户名和密码才能访问FTP服务器,但它也允许没有帐号的用户以匿名用户登录(当然这需要管理员设置FTP服务器允许匿名用户登录)。这时用户名是匿名(anonymous),密码是一般是用户的电子邮件地址。 FTP工作流程如下 - 客户端链接远程FTP服务器
- 客户端输入用户名和密码
- 客户端做各种文件传输和信息查询
- 客户端登出远程FTP服务器,结束通讯
有时由于网络原因 会导致事务在完成之前中断。客户端在超过900秒不活动后连接就会被关闭。 在底层,FTP使用TCP 而不是UDP。并且客户端和服务器都使用两个套接字来通讯:一个控制和命令端口(21号端口),一个数据端口(20号端口).。 FTP有两种模式:主动和被动(Python同时支持主动被动两种模式)。只有主动模式服务器才使用数据端口。而被动模式中服务器只告诉客户端他的随即端口号码,客户端必须主动建立数据链接。
Python 和 FTP 在使用Python的FTP支持时,需要导入ftplib模块,并实例化一个ftplib.FTP类对象 ftplib.FTP类方法 方法 | 属性 | login([user[, passwd[, acct]]]) | 登录到FTP服务器,所有参数都是可选的 | pwd() | 得到当前工作目录 | cwd(pathname) | 把当前工作目录设置为pathname | dir(argument[, ...[,cb]·]) | 显示参数目录的内容,可选参数cb是一个回调函数他会被传给retrlines()方法 | nlst(argument[, ...]) | 与dir 类似 但返回一个文件名列表 而不是显示这些文件 | retrlines(command[, callback]) | 给定FTP命令 用于下载文本文件 可选的会小函数用于处理每一块下载的数据(每块默认为为8k) | retrbinary(command, callback[, maxblocksize[, rest]]) | 与上一个类似 但这个指令处理二进制文件 | storlines(command, file[, callback]) | 给定FTP命令,用于上传文件 要给定一个文件对象file | storbinary(command, file[, blocksize, callback, rest]) | 与上一个类似 只是这个处理二进制文件 要给定文件对象 上传块大小默认8k | rename(fromname, toname) | 修改文件名 | delete(filename) | 删除远程文件 | mkd(pathname) | 创建远程目录 | rmd(dirname) | 删除远程目录 | quit() | 关闭链接并断开 |
Python使用FTP流程为 - <span style="color: rgb(0, 0, 255); line-height: 1.5 !important;">from</span> ftplib <span style="color: rgb(0, 0, 255); line-height: 1.5 !important;">import</span><span style="color: rgb(0, 0, 0); line-height: 1.5 !important;"> FTP
- f </span>= FTP(<span style="color: rgb(128, 0, 0); line-height: 1.5 !important;">'</span><span style="color: rgb(128, 0, 0); line-height: 1.5 !important;">ftp.python.org</span><span style="color: rgb(128, 0, 0); line-height: 1.5 !important;">'</span><span style="color: rgb(0, 0, 0); line-height: 1.5 !important;">)
- f.login(</span><span style="color: rgb(128, 0, 0); line-height: 1.5 !important;">'</span><span style="color: rgb(128, 0, 0); line-height: 1.5 !important;">anonymous</span><span style="color: rgb(128, 0, 0); line-height: 1.5 !important;">'</span>,<span style="color: rgb(128, 0, 0); line-height: 1.5 !important;">'</span><span style="color: rgb(128, 0, 0); line-height: 1.5 !important;">guess@who.org</span><span style="color: rgb(128, 0, 0); line-height: 1.5 !important;">'</span><span style="color: rgb(0, 0, 0); line-height: 1.5 !important;">)
- :
- f.quit()</span>
复制代码
|
|