python语言学习之网络客户端编程

   网络互联是当今互联网中大部分客户端/服务器协议的核心,网络协议包括文件传输(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...)

posted @ 2012-09-29 17:21  forwhy  阅读(409)  评论(0编辑  收藏  举报