第四周大纲
本周主要讲了git,正则表达式,多线程和进程,计算机基础,套接字。2018-3-23进行了周考,在周考中检测出来的问题有:字典方面的知识有待加强,面向对象编程有待加强。
git
正则表达式
多线程和进程
计算机基础
套接字
- 1.收发邮件:主要模块:email.mime.multipart;email.mime.text ;smtplib
from email.mime.multipart import MIMEMultipart
from email.mime.text import MIMEText
from smtplib import SMTP
def main():
sender = SMTP('smtp.126.com')
sender.login('cd_ios_1605@126.com', '1qaz2wsx')
message = MIMEMultipart()
message['From'] = '骆昊'
message['To'] = '瓜西西'
message['Cc'] = 'shuling@1000phone.com'
message['Subject'] = '请查收附件中的数据'
text_msg = MIMEText('附件中有本月关键数据请查收!', 'plain', 'utf-8')
message.attach(text_msg)
att2 = MIMEText(open('hello.xlsx', 'rb').read(), 'base64', 'utf-8')
att2['Content-Type'] = 'application/vnd.ms-excel'
att2['Content-Disposition'] = 'attachment; filename=foo.xlsx'
message.attach(att2)
sender.sendmail('cd_ios_1605@126.com',
['957658@qq.com', 'jackfrued@126.com'],
message.as_string())
print('发送完成!')
if __name__ == '__main__':
main()
- 2.收发短信:主要模块:urllib.parse,http.client,json
import urllib.parse
import http.client
import json
host = "106.ihuyi.com"
sms_send_uri = "/webservice/sms.php?method=Submit"
params = urllib.parse.urlencode({
'account': '',
'password': '',
'content': '您的验证码是:147258。请不要把验证码泄露给其他人。',
'mobile': '18281599458',
'format': 'json'
})
print(params)
headers = {'Content-type': 'application/x-www-form-urlencoded', 'Accept': 'text/plain'}
conn = http.client.HTTPConnection(host, port=80, timeout=10)
conn.request('POST', sms_send_uri, params, headers)
response = conn.getresponse()
response_str = response.read()
jsonstr = response_str.decode('utf-8')
print(json.loads(jsonstr))
conn.close()
- 3.发送图片:
from socket import socket, SOCK_STREAM, SOCK_DGRAM
from time import sleep
def main():
sender = socket(type=SOCK_DGRAM)
with open('girl.jpg', 'rb') as f:
data = f.read()
data_len = len(data)
total = 0
while total < data_len:
sender.sendto(data[total:total+1024], # 给数据切片,因为数据太大
('10.7.189.118', 9876)) # 发给谁,发到哪个端口
total += 1024
sleep(0.001)
- 4.服务端(这里实现的是一问一答式)
from socket import socket, AF_INET, SOCK_STREAM
import time
from datetime import datetime
def main():
# 创建一个基于TCP协议的服务器套接字对象
# 因为我们做的是应用级的产品或服务所以可以利用现有的传输服务来实现数据传输
server = socket(AF_INET, SOCK_STREAM) # 创建了一个服务器端的套接字,相当于创建了一个插座,
# 绑定IP地址(网络上主机的身份标识)和端口(用来区分不同服务的IP地址的扩展)
server.bind(('10.7.189.74', 6789)) # 代表本机的IP的地址或者 localhost
# 开始监听客户端的连接
server.listen(512) # 512是队列的大小 2**16
print('服务器已经启动,正在监听。。。')
now_time = datetime.now().__str__() #关于时间的函数
is_send = True
client, addr = server.accept() # 如果没有人连上,代码会阻塞在这里。,client代表客户端
print(addr, '连接成功')
while True:
# 通过accept方法接收客户端的连接
# accept是一个阻塞式方法,如果没有客户端练上来
# 那么 accept方法就会让代码阻塞,直到有客户端连接成功才返回
# accept方法返回一个元组,元组中的第一个值代表客户端的对象,
# 元组中的第二个值又是一个元组,其中有客户端的IP地址和客户端的端口
if is_send:
str1 = input('A请回复:')
client.send(str1.encode('utf-8'))
is_send = False
else:
data = client.recv(512)
print(data.decode('utf-8'))
is_send = True
# client.close()
if __name__ == '__main__':
main()
5.客户端
from socket import socket
def main():
client = socket()
client.connect(('10.7.189.57', 9090))
is_sending = True
while True:
if is_sending:
something = str(input('B请回复:'))
client.send(something.encode('utf-8'))
is_sending = False
else:
data = client.recv(512) # 收发数据 - recv, send
print(type(data))
print(data.decode('utf-8'))
is_sending = True
if __name__ == '__main__':
main()
中间因为个人原因耽搁,第四周总结的并不好,对于考试内容的复盘也还在进行,对这些题都要一一学会。总结需要修改。