网络编程(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()
阅读全文
0 0
- 网络编程(2)
- 网络编程 (2)
- 网络编程(2)
- 网络编程(2)
- Linux网络编程--(2)网络编程基础
- 网络编程-----HTTP(2)
- ios网络编程(2)
- python网络编程(2)
- linux网络编程(2)
- 网络编程(2)UDP
- linux网络编程(2)
- java网络编程-(2)网络通信方式和网络编程步骤
- 网络编程(Socket编程)
- 《unix网络编程》(2)网络模型和协议概述
- socket网络编程(2)-socket网络结构类型
- 网络socket编程(2)---客户端
- 《Windows网络编程 2》读书笔记(一)
- TCP/IP网络编程(2)
- 在Salesforce页面布局中添加Visualforce Pages项
- iOS实现联系人按照首字母进行排序
- 运营的企业,多关注商标注册
- mysqlbinlog flashback 5.6完全使用手册与原理
- context-param
- 网络编程(2)
- python安装第三方包packages
- scrapyd的安装和基本使用
- 2017 ACM-ICPC ECL-FINAL 部分代码
- MySQL异常:本地计算机上的mysql服务启动后停止,某些服务在未由其他服务或程序使用时将自动停止。
- 栈的基本操作及其应用 表达式求值
- 属性组合动画
- 对自执行函数的理解
- 剑指offer 编程题(17):二叉树的镜像