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

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

文件传输(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协议

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

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客户端_python客户端编程相关推荐

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

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

  2. socket python实例_Python网络编程—第27课—Socket实例(0531)

    一.创建套接字示例(服务端) import socket #导入模块 import time #导入模块 s = socket.socket(socket.AF_INET, socket.SOCK_S ...

  3. python箴言_Python高效率编程的8条箴言

    一团网资讯 一团资讯 > python > Python高效率编程的8条箴言 Python高效率编程的8条箴言 2018-05-19 10:37:54     发布者:来源网络 Pytho ...

  4. python大鱼吃小鱼_python 游戏编程 大鱼吃小鱼

    # 游戏编程:按照以下游戏编写一个乌龟类和鱼类,并尝试编写游戏. # 假设游戏场景(x,y)为0<=x<=10,0<=y<=10 # 游戏生成1只乌龟和10只鱼 # 他们的移动 ...

  5. 吃鸡 python开发_python青少年编程第三季——14、吃鸡联盟之亚瑟开枪(上)

    各位小伙伴大家好: 本期开始我们一起来做一个小项目,总结一下我们学习过的有关面向对象编程的知识.目标是实现一个另类版的简易吃鸡游戏,让亚瑟开枪射击小兵. 在为程序写代码之前,我们需要先分析这个程序大概 ...

  6. 存款利息python题_Python——GUI编程 利息计算器 作业9(python programming)

    importsysfrom PyQt5.QtCore import * from PyQt5.QtGui import * from PyQt5.QtWidgets import * classcal ...

  7. python网络编程(1):客户端与网络编程简介

    python网络编程(1):客户端与网络编程简介 很多情况下,网络编程就是选择并使用一个已经支持所需网络操作的库的过程. 1.使用pygeocoder实现地址和经纬度的转换 通过pipenv创建虚拟环 ...

  8. python开发客户端_python用700行代码实现http客户端

    本文用python在TCP的基础上实现一个HTTP客户端, 该客户端能够复用TCP连接, 使用HTTP1.1协议. 一. 创建HTTP请求 HTTP是基于TCP连接的, 它的请求报文格式如下: 因此, ...

  9. python交互式编程客户端_【python】UDP网络编程:实现服务端与客户端的交互、简单的AI智能模式...

    关于UDP网络编程 UDP(user datagram protocol)的中文叫用户数据报协议,属于传输层.UDP是面向非连接的协议,它不与对方建立连接,而是直接把要发的数据发给对方. [UDP网络 ...

  10. python调用微信客户端_python模拟微信客户端打开链接Python Logging 模块研究

    背景 在一个新的项目里面加入了日志功能,想自己写一个,但是一个偶然的机会,通过google发现Python内建了一个非常强大的日志(log)模块:logging.粗略的研究了一下,下面是我的一些心得札 ...

最新文章

  1. AngularJS ng-if使用
  2. Linux环境下安装Mysql+SphinxSE
  3. mybatis显示sql语句 log4j.properties配置文件
  4. 重磅!大数据知识总结和调参技巧开放下载了
  5. XLNet:广义自回归预训练语言模型 2019 NIPS
  6. ansible一键部署rsync服务剧本
  7. JDK版本更换后编译android系统出错
  8. WPF高级教程(三)XAML
  9. 格力空调通讯协议_格力空调485通讯协议格式 485总线上modbus通信协议?
  10. 大学计算机培训策划书,大学计划书的范文
  11. raid数据恢复,Raid5磁盘阵列数据恢复案例,服务器数据恢复
  12. 计算N阶行列式的详细讲解(C语言)(降阶法)(函数递归)
  13. 新手不要再被误导!这是一篇最新的Xposed模块编写教程
  14. 如何规避采购风险?五种有效的采购风险防范措施
  15. 初学linux用哪个发行版本,初学者学习Linux选择哪个发行版本合适?
  16. 怎样将文件压缩并传到服务器,客户端上传压缩文件(zip)的思路和实现
  17. 织梦微信小程序一键生成插件(资讯案例模板),整合织梦CMS一切数据信息
  18. python pyside简单布局_PySide2/PyQt5的4种基础布局管理
  19. ERES BRES的区别
  20. 「Corn #12」梦回高中

热门文章

  1. Android设置TabLayout下划线宽度,靠谱版本!
  2. 芯动力——硬件加速设计方法——学习笔记(1)
  3. 刻录cd(不同系统的方式)
  4. 手动搭建webase(3)——WeBASE管理平台
  5. 计算机找不到wf连接,笔记本wifi功能消失了 电脑wifi连接没了 电脑的wifi不见了...
  6. ps.execute()不能当作执行结果反馈,需要用getResultSet或getUpdateCount
  7. 2015InfoQ软件大会技术记录
  8. 搭建资金运营体系提高企业的运营能力
  9. 详解CSS中的百分号%设置
  10. 推荐 | 给好奇者的一些优秀个人博客