Python因特网客户端编程

2019-03-14 18:02:10 浏览数 (1)

简介

底层网络通信协议使用的是套接字,当我们需要进行文件传输、阅读、发送接收电子邮件时,使用的协议与套接字的客户端/服务器端相似,唯一去的区别在于使用TCP/IP这样的底层的协议创建了新的、有专门用途的协议,以此来实现刚刚介绍的服务。

文件传输

文件传输因特网协议

包括:

  • 文件传输协议FTP,需要登录,但可以匿名登录
  • UNIX到UNIX复制协议UUCP
  • 用于web的超文本传输协议HTTP,不需要登录
  • UNIX下的远程文件复制命令rcp(以及更安全更灵活的scprsync),需要登录

文件传输协议FTP

主要用于匿名下载公共文件,也可用于两台计算机之间传输文件。FTP要求输入用户名和密码才能访问远程FTP服务器,但也允许用户匿名登录,匿名登录的用户名为“anonymous”,密码一般是用户的电子邮件地址。匿名登录只能使用有限的几个FTP命令。

工作流程如下:

  1. 客户端连接远程主机上的FTP服务器
  2. 客户端输入用户名和密码(或“anonymous”和电子邮件地址)
  3. 客户端进行各种文件传输和信息查询操作
  4. 客户端从远程FTP服务器退出,结束传输

在底层,FTP只使用TCP,而不使用UDP。客户端和服务器都使用两个套接字来通信:一个是控制和命令端口(21号端口),另一个是数据端口有时候是20号端口)。

之所以说是有时候,是因为FTP有两种模式:主动和被动主动模式下,服务器才使用20号端口为数据端口,并“主动”连接客户端的数据端口。在被动模式下,服务器只是告诉客户端随机的数据端口号,客户端必须主动建立数据连接。

Python和FTP

导入ftplib模块→实例化一个ftplib.FTP对象。所有的FTP操作都使用这个对象完成。

方法

描述

login(用户名,密码等)

登录ftp服务器

pwd()

获得当前工作目录

cwd(路径)

设置当前工作目录

dir(路径)

显示目录中的内容

nlst(路径)

与dir类似,但是返回的是包含文件名的列表

retrlines(cmd命令)

给定FTP命令,用于下载文本文件。

retrbinary(cmd命令)

与retrlines类似,只用来处理二进制文件

storlines(cmd命令,文件对象)

给定FTP命令,用来上传文本文件

storbinary(cmd命令,文件对象)

与strolines相似,只用来处理二进制文件

rename(旧文件名,新文件名)

重命名

delete(路径)

删除位于 路径 的远程文件

mkd(目录)

创建远程目录

rmd(目录)

删除远程目录

quit()

关闭连接并退出

网络新闻

Usenet与新闻组

Usenet新闻系统是一个全球存档的“电子公告板”。整个系统是一个由大量计算机组成的庞大的全球网络,计算机之间共享Usenet上的帖子。

网络新闻传输协议

用户使用网络新闻传输协议(NNTP)在新闻组中下载或发表帖子。在FTP中,登录、传输和控制需要使用不同的端口,而NNTP只使用一个标准端口119来通信

Python和NNTP

有一个nntplib库和一个需要实例化的nntplib.NNTP类

  1. 连接到服务器
  2. 登录(根据需要)
  3. 发出服务请求
  4. 退出

一般来说,登陆后需要调用group()方法来选择一个感兴趣的新闻组。该方法返回服务器的回复、文章数量、第一篇和最后一篇文章的ID、新闻组的名称。

nntplib.NNTP类方法

见链接:https://docs.python.org/3/library/nntplib.html#methods

0 人点赞