网络互联是当今互联网中大部分客户端/服务器协议的核心,网络协议包括文件传输(FTP、SCP。。。)、阅读新闻组(NNTP)、电子邮件发送(AMTP)、从服务器上下载电子邮件(POP、IMAP)等。
对于FTP协议,它包括两种模式:主动和被动。只有主动模式服务器才使用数据端口。而被动模式中,服务器只是告诉客户端它的随机端口的号码,客户端必须主动建立数据链接。
1、python写FTP客户端程序流程:
1.连接到服务器
2.登录
3.发出服务请求
4.退出
使用python的FTP支持时需要我们导入ftplib模块,并实例化ftplib.FTP类对象,代码如下:
from ftplib import FTP
f=FTP('ftp.python.prg')
f.login('anonymous','cjl@qq.com')
...
f.quit()
一个例子:该程序用于下载网站中最新版本的文件。
#!usr/bin/env python
import ftplib
import os
import socket
HOST='ftp.mozilla.org'
DIRN='pub/mozilla.org/webtools'
FILE='bugzilla-LATEST.tar.gz'
def main():
try: #尝试连接
f=ftplib.FTP(HOST)
except(socket.error,socket.gaierror),e:
print 'ERROR:cannot reach "%s"'%HOST
return
print '***Connected to host "%s"'%HOST
try:
f.login() #尝试匿名登录
except ftplib.error_perm:
print 'ERROR: cannot login anonymously'
f.quit()
return
print '***Logged in as "anonymous"'
try:
f.cwd(DIRN) #转入发布目录
except ftplib.error_perm:
print 'ERROR: cannot CD to "%s"'%DIRN
f.quit()
return
try: #传一个回调函数给retrbinary,每接收到一块二进制数据的时候会被调用
retrbinary('RETR %s'%FILE,open(FILE,'wb').write)#开始下载
except ftplib.error_perm:
print 'ERROR: cannot read file "%s"',FILE
os.unlink(FILE)
else:
print '***Downloaded "%s" to CWD'%FILE
f.quit()
return
if __name__="__main__":
main()
2、python与 NNTP(网络新闻传输协议):
1.链接诶到服务器
2.登录
3.发送请求
4.退出
伪代码为:
from nntplib import NNTP
n=NNTP('your.nntp.server ')
r,c,f,l,g=n.group('comp.lang.python')
....
n.quit()
(no complished...)