上一篇说了最为底层的用来网络通讯的套接字。有很多基于套接字的一些协议,这些协议构成了当今互联网大多数客户服务器应用的核心

其实这些协议时在套接字上面的进一层封装用来完成特定的应用,这些应用主要包括:

  1. 文件传输(FTP, SCP 等)
  2. 阅读Usenet 新闻组(NNTP)
  3. e-mail 发送(SMTP)
  4. 从服务器上下载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协议

去找相应的库吧,对这个协议不感兴趣的

Email

之前有个师兄用它来解决类似于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客户端编程的更多相关文章

  1. python web编程-CGI帮助web服务器处理客户端编程

    这几篇博客均来自python核心编程 如果你有任何疑问,欢迎联系我或者仔细查看这本书的地20章 另外推荐下这本书,希望对学习python的同学有所帮助 概念预热 eb客户端通过url请求web服务器里 ...

  2. python网络编程socketserver模块(实现TCP客户端/服务器)

    摘录python核心编程 socketserver(python3.x版本重新命名)是标准库中的网络编程的高级模块.通过将创建网络客户端和服务器所必须的代码封装起来,简化了模板,为你提供了各种各样的类 ...

  3. python网络编程socket编程(TCP、UDP客户端服务器)

    摘录 python核心编程 使用socket()模块函数创建套接字——通信端点 >>> from socket import * >>> tcpSock = soc ...

  4. Python Socket 编程——聊天室示例程序

    上一篇 我们学习了简单的 Python TCP Socket 编程,通过分别写服务端和客户端的代码了解基本的 Python Socket 编程模型.本文再通过一个例子来加强一下对 Socket 编程的 ...

  5. Python 网络编程(二)

    Python 网络编程 上一篇博客介绍了socket的基本概念以及实现了简单的TCP和UDP的客户端.服务器程序,本篇博客主要对socket编程进行更深入的讲解 一.简化版ssh实现 这是一个极其简单 ...

  6. Python 网络编程(一)

    Python 网络编程 socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字"向网络发出请求或者应答网络请求. ...

  7. python web编程-概念预热篇

    互联网正在引发一场革命??不喜欢看概念的跳过,注意这里仅仅是一些从python核心编程一书的摘抄 这正是最激动人心的一部分了,web编程 Web 客户端和服务器端交互使用的“语言”,Web 交互的标准 ...

  8. Python学习(22)python网络编程

    Python 网络编程 Python 提供了两个级别访问的网络服务.: 低级别的网络服务支持基本的 Socket,它提供了标准的 BSD Sockets API,可以访问底层操作系统Socket接口的 ...

  9. 【Python千问 1】Python核心编程(第二版)导读

    第一章 欢迎来到Python世界 什么是Python Python的起源 Python的特点 下载Python 安装Python 运行Python Python文档 比较Python(与其它语言的比较 ...

随机推荐

  1. Selenium2(webdirver)入门之环境搭建(Java版)

    一.开发环境: 1.JDK1.6 2.Eclipse:Version: Kepler Service Release 1,下载地址:http://www.eclipse.org/downloads/ ...

  2. cocos2dx 2.x实现闪电效果(贴画版)

    cocos2dx 2.x实现闪电效果(非画线版) 在网上搜索到一个直接用opengl画线实现的版本,但放在游戏中效果不太搭,要求用贴图的.我这个版本用的也是画线版的算法. 闪动的时候效果还可以,每段衔 ...

  3. 基于Hadoop 2.6.0运行数字排序的计算

    上个博客写了Hadoop2.6.0的环境部署,下面写一个简单的基于数字排序的小程序,真正实现分布式的计算,原理就是对多个文件中的数字进行排序,每个文件中每个数字占一行,排序原理是按行读取后分块进行排序 ...

  4. ffmpeg-20160515-git-bin

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...

  5. Maven 安装

    简单记录maven的安装步骤: 在安装maven之前,先确保已经安装JDK1.6及以上版本,并且配置好环境变量. 下载maven3,最新版本是Maven3.2.3 ,下载地址:http://maven ...

  6. 警告:Assigning to 'id<Delegate>' from incompatible type 'ViewController *const_st

    原因: 你自己写了代理,设置了   delegate = self.但是self 没有遵守这个协议 只需要遵守这个协议就可以消除警告.

  7. SQL Server 2008 R2 安装出错:Could not open key

    安装Sql Server 2008 R2 企业版出现错误提示无法继续安装,错误提示为: Could not open key: UNKNOWN\Components\7ABFE44842C12B390 ...

  8. 用Python套接字创建HTTP客户与服务器程序

    最近在学习python,网络编程中,python寥寥几句,就可以创建一个服务端和客户端程序: 服务端: import sockets = socket.socket()host = socket.ge ...

  9. UICollectionView cellForItemAtIndexPath 方法不走

    在storyboard 中 UICollectionView cellForItemAtIndexPath not called 被坑了好久,各种问题点查找,终于解决了 解决办法: self.auto ...

  10. xmpp SASL 定义

    SASL 定义 <摘抄自:xmpp_3920> [SASL]的 profiling 需求要求协议定义 供以下信息: 服务名:“xmpp” 初始序列:初始实体 供一个开放 XML 流头后,并 ...