网络编程

基于传输层协议的套接字编程

套接字(socket)

应用层通过传输层进行数据通信时,TCP和UDP会遇到同时为多个应用程序进程提供并发服务的问题。多个TCP连接或多个应用程序进程可能需要通过同一个TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了称为套接字 (Socket)的接口,区分不同应用程序进程间的网络通信和连接。

生成套接字,主要有3个参数:通信的目的IP地址、使用的传输层协议(TCP或UDP)和使用的端口号

实战1:发送邮件

在自动化测试中常用场景,执行完用例后自动发邮件,这里可以用到Python的smtplib库,它对smtp协议进行了简单的封装。

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。

Python SMTP发送邮件

创建SMTP对象

import smtplib

smtpObj = smtplib.SMTP( [host [, port [, local_hostname]]] )

SMTP对象中sendmail方法用例发送邮件

SMTP.sendmail(from_addr, to_addrs, msg[, mail_options, rcpt_options])
# 示例
smtper.sendmail(sender, receivers, message.as_string())

from_addr: 邮件发送者地址。

to_addrs: 字符串列表,邮件发送地址。

msg: 发送消息,msg 是字符串,表示邮件内容,所以通常要处理成string类

给多人发邮件

receivers = ['jiuyi@mgtv.com','2298058405@qq.com']
message['To'] = ','.join(receivers)
smtper.sendmail(sender, message['To'].split(','), message.as_string())

1、receivers存为列表类型

2、将receivers列表处理后传给MIMEText对象To键,再处理后传给sendmail方法中to_addrs参数

发送纯文本邮件

创建MIMEText邮件主题对象

message = MIMEText(content, _subtype, 'utf-8')

content:文本内容,必须是字符串

_subtype:文本类型默认为'plain',html格式类型为'html'

内容编码:中文默认utf-8

发送带附件的邮件

创建MIMEMultipart类型对象

multipart类型主要有三种子类型:mixed、alternative、related

MIMEMultipart(‘mixed’)类型:如果一封邮件中含有附件

MIMEMultipart(‘alternative’)类型:MIME邮件可以传送超文本内容,但出于兼容性的考虑,一般在发送超文本格式内容的同时会同时发送一个纯文本内容的副本,如果邮件中同时存在纯文本和超文本内容,则邮件需要在Content-Type域中定义multipart/alternative类型

MIMEMultipart(‘related’)类型:MIME邮件中除了可以携带各种附件外,还可以将其它内容以内嵌资源的方式存储在邮件中。