python客户端编程
上一篇说了最为底层的用来网络通讯的套接字。有很多基于套接字的一些协议,这些协议构成了当今互联网大多数客户服务器应用的核心
其实这些协议时在套接字上面的进一层封装用来完成特定的应用,这些应用主要包括:
- 文件传输(FTP, SCP 等)
- 阅读Usenet 新闻组(NNTP)
- e-mail 发送(SMTP)
- 从服务器上下载e-mail(POP3, IMAP)等等
这些协议的工作方式与之前在套接字编程中介绍的客户端/服务器的例子很像
因特网客户端??
好吧,之前我们实现了两个机器的通信,那因特网呢?其实我们在因特网这里的网络模型也是按个客户服务器,我想你知道这个是什么了
因特网协议??
socket传递只能是字符串是吧?说起来是TCP UDP协议咩?答案是什么呢?
这里,我们将详细了解三个因特网协议——FTP, NNTP 和POP3,并写出它们的客户端程序。通
过这些程序,你将会发现这些协议的API 是多么的相似——由于保持接口的一致性有很大的好处,
所以,这些相似性在设计之初就考虑到了——更重要的是,你还能学会如何写出这些协议与其它协
议实用的客户端程序来。虽然我们只着重说了这三个协议。在看完这些协议后,你就能有足够的信
心和能力写出任何因特网协议的客户端程序了。
文件传输
因特网中最流行的事情就是文件的交换。文件交换无处不在。有很多协议可以供因特网上传输文件使用。
最流行的有文件传输协议(FTP),Unix-to-Unix 复制协议(UUCP),以及网页的超文本传输
协议(HTTP)。另外,还有(Unix 下的)远程文件复制指令rcp(以及更安全,更灵活的scp 和rsync)
迄今为止,HTTP,FTP 和scp/rsync 还是非常流行的。HTTP 主要用于网页文件的下载和访问Web
服务上。它一般不要求用户输入登录的用户名密码就可以访问服务器上的文件和服务。HTTP 文件传
输请求主要是用于获取网页(文件下载)。
文件传输之FTP
在底层上,FTP 只使用TCP(见前面网络编程相关章节)——它不使用UDP。而且,FTP 是客户
端/服务器编程中很“与众不同”的例子。客户端和服务器都使用两个套接字来通讯:一个是控制
和命令端口(21 号端口),另一个是数据端口(有时是20 号端口)。
协议工作流:
1. 客户端连接远程的FTP 服务器
2. 客户端输入用户名和密码(或“anonymous”和e-mail 地址)
3. 客户端做各种文件传输和信息查询操作
4. 客户端登出远程FTP 服务器,结束通讯
python使用ftp??
我猜你知道了,肯定有什么模块,没错他就是ftplib
好啦,其实如果你有跨网络大量传输文件的需求,完全可以使用python来做,它很简单而且自动化
新闻组nntp协议
去找相应的库吧,对这个协议不感兴趣的
之前有个师兄用它来解决类似于im通信的功能,好了现在来看看这个东西
smtp协议发送邮件与smtplib
邮件发送首先要有邮件服务器的
pop3协议接收邮件与poplib
这里接受的邮件也是要邮件服务器的
一个完整的例子可以参考这里
有了这两个协议就可以开发一个自己的邮件收发客户端了,想想Gmail客户端,outlook客户端
Python 最好的一个方面就是它在标准库中提供了相当的全面的网络支持。尤其在因特网协议和
客户端开发方面的支持更为全面。下面列出了一些相关模块,首先是电子邮件相关的,随后是一般
用途的因特网协议相关的。
email e-mail 处理的包 (也支持MIME)
rfc822 RFC2822 邮件头解析器
smtpd SMTP 服务器
base64 Base 16,32,和64 数据编码(RFC 3548)
mhlib 处理MH 文件夹和信息的类
mailbox 支持mailbox 文件格式解析的类
mailcap “mailcap” 文件的处理模块
mimetools (不建议使用)MIME 信息解析工具(使用上面的email)
mimetypes 在文件名或URL 到相关的MIME 类型之间转换的模块
MimeWriter (不建议使用)MIME 信息处理模块(使用上面的email)
mimify (不建议使用)信息的MIME 处理工具(使用上面的email)
binascii 二进制和ASCII 转换
binhex Binhex4 编码和解码支持
另外这里也列出其他的有关互联网客户端的,可以看到httplib
ftplib FTP 协议客户端
gopherlib Gopher 协议客户端
httplib HTTP 和HTTPS 协议客户端
imaplib IMAP4 协议客户端
nntplib NNTP protocol client
nntplib NNTP 协议客户端
poplib POP3 协议客户端
smtplib SMTP 协议客户端
telnetlib Telnet 协议客户端类
还有之前使用的 suds和soaplib(现在是spyne)
不同的协议其实就是针对不同的问题来解决的
所以这里你或许会有疑问,邮件服务器是怎么实现的呢?
文件服务器怎么用python实现?
也许他们并不用使用python实现
python客户端编程的更多相关文章
- python web编程-CGI帮助web服务器处理客户端编程
这几篇博客均来自python核心编程 如果你有任何疑问,欢迎联系我或者仔细查看这本书的地20章 另外推荐下这本书,希望对学习python的同学有所帮助 概念预热 eb客户端通过url请求web服务器里 ...
- python网络编程socketserver模块(实现TCP客户端/服务器)
摘录python核心编程 socketserver(python3.x版本重新命名)是标准库中的网络编程的高级模块.通过将创建网络客户端和服务器所必须的代码封装起来,简化了模板,为你提供了各种各样的类 ...
- python网络编程socket编程(TCP、UDP客户端服务器)
摘录 python核心编程 使用socket()模块函数创建套接字——通信端点 >>> from socket import * >>> tcpSock = soc ...
- Python Socket 编程——聊天室示例程序
上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...
- Python 网络编程(二)
Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...
- Python 网络编程(一)
Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...
- python web编程-概念预热篇
互联网正在引发一场革命??不喜欢看概念的跳过,注意这里仅仅是一些从python核心编程一书的摘抄 这正是最激动人心的一部分了,web编程 Web 客户端和服务器端交互使用的“语言”,Web 交互的标准 ...
- Python学习(22)python网络编程
Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...
- 【Python千问 1】Python核心编程(第二版)导读
第一章 欢迎来到Python世界 什么是Python Python的起源 Python的特点 下载Python 安装Python 运行Python Python文档 比较Python(与其它语言的比较 ...
随机推荐
- iOS 活动图 流程图
活动图 活动图和状态机图都被称为演化图,其区别和联系如下: 1.活动图:用于描述用例内部的活动或方法的流程,如果除去活动图中的并行活动描述以后,它就变成流程图. ...
- ios 修正waring:Method override for the designated initializer of the superclass '-init' not found
swift引入后,为了使oc和swift更相近,对oc的初始化方法也进行了修正,具体说明,见下面的链接,这个waring的最简单的修正方法是,到相应类的头文件中,去掉在自定义初始化方法后面的 NS_D ...
- MySQL(MariaDB)的 SSL 加密复制
背景: 在默认的主从复制过程或远程连接到MySQL/MariaDB所有的链接通信中的数据都是明文的,在局域网内连接倒问题不大:要是在外网里访问数据或则复制,则安全隐患会被放大很多.由于项目要求需要直接 ...
- Tcpdump的详细用法
1. TCPDump介绍 TcpDump可以将网络中传送的数据包的"头"完全截获下来提供分析.它支持针对网络层.协议.主机.网络或端口的过滤,并提供and.or.not等逻辑语句来 ...
- FZU 2165 v11(最小重复覆盖)+ codeforces 417D Cunning Gena
告诉你若干个(<=100)武器的花费以及武器能消灭的怪物编号,问消灭所有怪物(<=100)的最小花费...当然每个武器可以无限次使用,不然这题就太水了╮(╯▽╰)╭ 这题当时比赛的时候连题 ...
- C++基础(纯虚函数与抽象类)
C++基础之纯虚函数与抽象类 引言 纯虚函数在C++编程中的地位很重要,其关联到了设计模式中"接口"的概念. 语法 纯虚函数的语法: 1. 将成员函数声明为virtual 2. ...
- 把图标改成web字体
一.下载自己想要的矢量图标,然后在AI中打开二.在AI中将有瑕疵的图标修改一下,再分别另存为svg格式的图标三.打开IcoMoon Web app网页,然后点击左上角的+Import Icons添加你 ...
- EL表达式中fn函数 (转载)
JSTL 使用表达式来简化页面的代码,这对一些标准的方法,例如bean的getter/setter方法,请求参数或者context以及 session中的数据的访问非常方便,但是我们在实际应用中经常需 ...
- 【matlab】随意记录
v = -0.5:0.05:0.5; [x, y] = meshgrid(v); z = sqrt(1.0 - x.^2 - y.^2); mesh(x,y,z); 画一个球的一部分: 2. 求cel ...
- docker基础命令
docker version ...