《零基础学Python》常见的Python网络应用【二十】

整体文章目录

整体目录

一、 当前章节目录

在这里插入图片描述

二、使用FTP传输文件

文件传送协议(File Transfer Protocol,FTP)是一个将数据文件从一台主机传送到另外一台主机上的传输协议。这是Internet上最早的应用协议之一。

2.1 FTP的工作原理和Python库支持

  • FTP协议的工作原理是FTP的客户端连接FTP的服务器端,并给出用户名和密码进行认证。
  • 在Python标准库中,ftplib提供了对于FTP客户端实现的支持。
  • FTP协议和HTTP协议有点相似,都可以获取文档数据。但是两者也有本质的区别,使得其成为不同类型的协议。最大的区别在于前者是将命令和数据分开传输的,这称为带外数据。而后者控制信息和数据信息是放在一起的,这称为带内数据。

在这里插入图片描述

2.2 FTP的登录和退出

In [1]: import ftplib

In [2]: ftp = ftplib.FTP()

In [3]: ftp
Out[3]: <ftplib.FTP at 0x1faf990ed00>

In [4]: ftp = ftplib.FTP("192.168.1.106")

In [5]: ftp.quit()
Out[5]: '221 Goodbye.'

In [6]: ftp = ftplib.FTP()

In [7]: ftp.connect("192.168.1.106")
Out[7]: '220 Microsoft FTP Service'

In [8]: ftp.login()
Out[8]: '230 User logged in.'

In [9]: ftp.quit()
Out[9]: '221 Goodbye.'

In [10]: ftp.getwelcome()
Out[10]: '220 Microsoft FTP Service'

In [11]: ftp.sendcmd("PASV")
Out[11]: '227 Entering Passive Mode (192,168,31,128,202,86).'

2.3 FTP的数据传输

In [12]: ftp.pwd()
Out[12]: '/'

In [13]: ftp.mkd("python_book")
Out[13]: 'python_book'

In [14]: fp = open('D:\FtpSiter\python_book\simple_server.py', 'rb')

In [15]: ftp.storbinary("STOR simple_server.py", fp)
Out[15]: '226 Transfer complete.'

In [16]: ftp.retrlines("LIST")
07-04-21  01:13PM       <DIR>          localuser
07-05-21  03:41PM       <DIR>          python_book
07-05-21  03:57PM                    0 simple_server.py
Out[16]: '226 Transfer complete.'

In [17]: ftp.set_debuglevel(2)

In [17]: ftp.sendcmd("UMASK")
*cmd* 'UMASK'
*put* 'UMASK\r\n'
*get* '500 Command not understood.\n'
*resp* '500 Command not understood.'
---------------------------------------------------------------------------
error_perm                                Traceback (most recent call last)
# 省略部分输出
error_perm: 500 Command not understood.

In [18]: ftp.sendcmd("QUIT")
*cmd* 'QUIT'
*put* 'QUIT\r\n'
*get* '221 Goodbye.\n'
*resp* '221 Goodbye.'
Out[18]: '221 Goodbye.'

三、使用POP3获取邮件

3.1 POP3协议介绍

  • 接收邮件用得最多的协议是POP协议,默认使用TCP的110端口。
  • POP3仍然是采用的服务器端-客户端工作模式。
  • 一个典型的邮件客户端获取邮件的步骤如下:
    1. 使用DNS协议来解析POP3服务器的IP地址。
    2. 使用TCP协议来连接邮件服务器的110端口(默认情况下)。
    3. 当客户端连上POP3服务器后,将通过USER命令来传送邮箱账号,通过PASS命令来传送邮箱密码。提供这些信息来完成用户认证。
    4. 当完成用户认证后,可以使用STAT命令来获取POP3服务器中此账号的邮箱统计资料,包括邮件的总数和邮件大小等。
    5. 同时可以使用LIST命令列出POP3服务器中的已有邮件数量。
    6. 邮件客户端可以通过RETR命令来获取邮件,并使用DELE命令来设置删除标志。
    7. 所以的邮件获取完毕后,可以使用QUIT命令中断和POP3邮件服务器的连接。同时,服务器会删除已设置为删除标志的邮件。

在这里插入图片描述

3.2 poplib模块的使用

In [1]: import poplib

In [2]: pop = poplib.POP3("pop.163.com")

In [3]: pop.getwelcome
Out[3]: <bound method POP3.getwelcome of <poplib.POP3 object at 0x000001B747290070>>

# 需要开通邮箱pop
In [4]: pop.user("2008hchl@ pop.163.com")
Out[4]: b'+OK core mail'

# 此为开通pop时的授权码
In [5]: pop.pass_("******")
Out[5]: b'+OK 1 message(s) [18067 byte(s)]'

In [6]: pop.stat()
Out[6]: (1, 18067)

In [7]: resp, items, octets = pop.list()

In [8]: import random

In [9]: id, size = random.choice(items).decode().split(' ')

In [10]: resp, items, octets = pop.retr(id)

四、使用SMTP发送邮件

4.1 SMTP协议介绍

在这里插入图片描述

4.2 smtplib模块的使用

In [1]: import smtplib

In [2]: smtp = smtplib.SMTP("smtp.163.com")

In [3]: smtp.login("2008hchl@", "******")
Out[3]: (235, b'Authentication successful')

In [4]: smtp.noop()
Out[4]: (250, b'OK')

In [5]: FROM='2008hchl@'

In [6]: TO='2008hchl@'

In [7]: SUBJECT="Hello"

In [8]: BODY = "Hello, Python.\n"

In [9]: body = "".join((
"From:%s"%FROM,
"TO:%s"%TO,
"Subject:%s"%SUBJECT))+BODY

In [10]: print(body)
From:2008hchl@TO:2008hchl@Subject:HelloHello, Python.

In [11]: smtp.sendmail(FROM,[TO],body)
Out[11]: {}

In [12]: smtp.quit()
Out[12]: (221, b'Bye')

五、使用Telnet远程登录

5.1 Telnet协议介绍和Python库支持

在这里插入图片描述

5.2 telnetlib模块的使用

In [1]: import telnetlib

In [2]: telnet = telnetlib.Telnet()

In [3]: telnet.open("192.168.31.128")

In [4]: telnet.read_until("login:")

In [5]: telnet.write("user\n")

In [6]: telnet.read_until("Password:")

In [7]: telnet.write("password\n")

In [8]: telnet.write("ls\n")

In [9]: telnet.write("exit\n")

In [10]: telnet.read_all()

六、习题

习题:

  1. POP3与SMTP协议分别是什么?它们有什么不同?
  2. 使用Python编写一个发送邮件的小程序。

答案:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值