网络编程(2)

来源:互联网 发布:java rmi 无继承 框架 编辑:程序博客网 时间:2024/06/05 07:46

一、文件传输协议
1.Python和FTP

from ftplib import FTP as ftpf = ftp('some.ftp.server')f.login('anonymous','your@email.address')    .    .f.quit()

2.ftplib.FTP类的方法

login(user='anonymous',passwd='',acct='')    #登录ftp服务器参数可选pwd()                         #获取当前工作目录cwd(path)                     #把当前目录设置为path所以的路径dir(path[,...[,cb]])          #显示path目录里的内容,可选的参数cb是一个回调函数,会传递给retrlines()方法nlst(path[,...])             #与dir()类似,但返回的一个文件名列表,而不是显示这些文件名retrlines(cmd[,cb])          #FTP命令(如:“RETR filename”,用于下载文本文件。可选的回调函数cb用于处理文件的每一行)retrbinary(cmd,cb[,bs=8192[,ra]])  #与retrlines()类似,只是这个指令处理二进制文件。回调函数cb用于处理每一块(块大小默认为8KB)下载的数据storlines(cmd,f)              #给定FTP命令(如:"STOR filename"),用来上传文本文件,要给定一个文件对象。storbinary(cmd,f[,bs=8192])   #与storlines()类似,只是这个指令处理二进制文件,要给定一个对象f,上传块大小bs默认为8KBrename(old,new)               #把远程文件old重命名为newdelete(path)                  #删除位于path的远程文件mkd(directory)                #创建远程目录rmd(directory)                #删除远程目录quit()                        #关闭连接并退出

交互FTP示例

>>> from ftplib import FTP>>> f = FTP('ftp.python.org')>>> f.login('anonymous','guido@python.org')'230 Guest login ok, access restrictions apply'>>> f.dir()total 3drwxrwxr-x 10 1075 4127  512 May 17 2000 .drwxrwxr-x 10 1075 4127  512 May 17 2000 ..drwxrwxr-x 3  root wheel 512 May 19 1998 bindrwxrwxr-x 3  root 1400  512 Jun 17 2000 devdrwxrwxr-x 3  root wheel 512 May 17 2000 etc>>> f.quit()

SocketServer模块
SocketServer是标准库中的 一个高级模块(Python3.x中命名为socketserver),它的目标是简化多样板代码,它们是创建网络客户端和服务器所必需的代码。这个模块有为你创建各种各样的类。

BaseServer                       #包含核心服务器功能和min-in类的钩子;仅用于推导,这样不会创建这个类的实例;可以用TCPServer或UDPServer创建类的实例。TCPServer/UDPServer              #基础网络同步TCP/UDP服务器UnixStreamServer/UnixDatagramServer   #基于文件的基础同步TCP/UDP服务器ForkingMixIn/ThreadingMixIn           #核心派出或线程功能;只能做max-in类与一个服务器类配合实现一些异步性;不能直接实例化这个类;ForkingTCPServer/ForkingUDPServer     #ForkingMinIn和TCPServer/UDPServer的组合。ThreadingTCPServer/ThreadingUDPServer #ThreadingMinIn和TCPServer/UDPServer的组合。BaseRequestHandler                    #包含处理服务请求的核心功能;仅仅用于推导,这样无法创建这个类的实例;可以使用StreamRequestHandler或DatagramRequestHandler创建类的实例;StreamRequestHandler/DatagramRequestHandler    #实现TCP/UDP服务器的服务处理器;

服务端示例

#!/usr/bin/pythonfrom SocketServer import (TCPServer as TCP,StreamRequestHandler as SRH) from time import ctimeHOST = ''PORT = 21567BUFSIZE = 1024ADDR = (HOST,PORT)class MyRequestHandle(SRH):      def handle(self):           print '...connected from :',self.client_address           self.wfile.write('[%s] %s'%(ctime(),self.rfile.readline()))tcpServ = TCP(ADDR,MyRequestHandle)print 'waiting for connection...'tcpServ.serve_forever()

客户端示例

#!/usr/bin/pythonfrom socket import * HOST = 'localhost'PORT = 21567BUFSIZE = 1024ADDR = (HOST,PORT)while True:       tcpCliSock = socket(AF_INET,SOCK_STREAM)       tcpCliSock.connect_ex(ADDR)       data = raw_input('> ')       if not data:            break       tcpCliSock.send('%s\r\n' %data)       data = tcpCliSock.recv(BUFSIZE)       if not data:           break       print data.strip()       tcpCliSock.close()
原创粉丝点击