主要内容:建立简易聊天室服务器及客户端、采用UDP协议发送及接受图片,采用smtplib发送邮件,采用urllib发送短信

建立简易聊天室

服务器

from socket import socket
from threading import Threaddef main():class ClientHandler(Thread):def __init__(self, client):super(ClientHandler, self).__init__()self._client = clientdef run(self):try:while True:try:data = self._client.recv(1024)if data.decode('utf-8') == 'byebye':clients.remove(self._client)self._client.close()breakelse:for client in clients:client.send(data)  # 转发给每个客户端except Exception as e:print(e)clients.remove(self._client)breakexcept Exception as e:print(e)server = socket()# 可以用命令行参数 传入IP - sys.argvserver.bind(('10.7.189.92', 6789))server.listen(512)clients = []while True:now_client, address = server.accept()print(address[0], '连接到服务器')clients.append(now_client)ClientHandler(now_client).start()if __name__ == '__main__':main()

客户端

from socket import socket
from threading import Threaddef main():class Refresh(Thread):def __init__(self, client):super(Refresh, self).__init__()self._client = clientdef run(self):while running:data = self._client.recv(1024)print(data.decode('utf - 8'))name = input('昵称:')my_client = socket()my_client.connect(('10.7.189.92', 6789))running = TrueRefresh(my_client).start()while running:content = input('发言:')if content == 'byebye':my_client.send(content.encode('utf-8'))running = Falseelse:msg = name + ':' + contentmy_client.send(msg.encode('utf - 8'))if __name__ == '__main__':main()

采用UDP协议发送与接收图片

发送

# TCP - Transfer Control Protocol
# UDP - User Datagram Protocol
from socket import socket, SOCK_DGRAMdef main():sender = socket(type=SOCK_DGRAM)with open('ml.jpg', 'rb') as f:data = f.read()data_len = len(data)total = 0while total < data_len:sender.sendto(data[total:total + 1024],('此处为ip地址即发送给谁', 端口号))total += 1024if __name__ == '__main__':main()

接收

from socket import socket, SOCK_DGRAMdef main():receiver = socket(type=SOCK_DGRAM)receiver.bind(('绑定自己的IP', 端口号))data = bytes()  # bytes 代表二进制数据while True:seg, address = receiver.recvfrom(1024)data += segprint(len(data))if len(data) >= 609856:breakwith open('mlm.jpg', 'wb') as f:f.write(data)print('图片已接收!')if __name__ == '__main__':main()
小结:采用UDP协议发送消息或者图片等,可以不经过对方同意,只需要对方一连接,就可以发送给对应客户端,但是可能受各种信号的干扰导致发送不成功或者发送不完全。图片太大的话可以分字节发送,或者加上time,每隔0.01或者更多时间发送一次,这样可以降低收到的干扰,使得文件等不容易发送丢失

发送邮件及附件

import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipartdef main():sender = smtplib.SMTP('smtp.163.com')sender.login('1邮箱账号', '邮箱密码')# MIME - Multipurpose Internet Mail Extensionmessage = MIMEMultipart()# message['From'] = '来自于本大人'# message['To'] = '发给哈戳戳'message['Subject'] = 'DBYQX,晚上好!请查收附件!'text_msg = MIMEText('请查收附件,你懂得!', 'plain','utf-8')message.attach(text_msg)att = MIMEText(open('相关信息.docx','rb').read(), 'base64', 'utf-8')att['Content-Type'] = 'application/octet-stream'  # 每一种附件此处类型都有不同的写法att['Content-Disposition'] = 'attachment;filename=too.docx'message.attach(att)sender.sendmail('18281604435@163.com', ['1113792848@qq.com'],message.as_string())print('发送完成!')if __name__ == '__main__':main()
小结:通过在邮箱内开通stmp协议,可以让右件通过第三方登陆,从而可以通过python发送邮件,但是很可能当成垃圾邮件

给手机发送短信

import urllib.parse
import http.client
import jsonhost = "106.ihuyi.com"  # 群发网站,需要借用他们的服务器,50条免费,之后收费
sms_send_uri = "/webservice/sms.php?method=Submit"params = urllib.parse.urlencode({'account': '账号','password': '密码','content': '您的验证码是:147258。请不要把验证码泄露给其他人。','mobile': '此处为电话号码,发送给谁?','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()
小结:通过第三方,可以群发短消息,就好像以前的飞信一样,可以群发消息,不过这次是写代码完成,而不是简单的编辑短信然后发送~

Python -- 服务器与客户端,发送邮箱与短信相关推荐

  1. 系统监控:linux命令行-飞信客户端发送免费报警短信

    linux命令行下用Fetion飞信发送免费短信 一.最新版本2009 通过linux命令行来发送短信的方法,觉得甚是好用,适用运维监控.这里向大家推荐的是飞信机器人的软件,支持linux.命令行下的 ...

  2. 易语言通过服务器发送文件,易语言服务器与客户端发送文件

    易语言服务器与客户端发送文件 内容精选 换一换 PL/pgSQL是一种可载入的过程语言.用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方.例如,可以创建复杂条件的计算函数并且后面用它们 ...

  3. 服务器主动发送fin信号,tcp 服务器向客户端发送FIN

    tcp 服务器向客户端发送FIN 内容精选 换一换 ELB的常见异常返回码有400.403.502.504等.若遇到这些返回码建议您先直接访问后端云服务器,查看是否是后端云服务器的异常.若后端云服务器 ...

  4. 邮箱发送验证码和短信发送验证码的学习笔记

    邮箱发送验证码 //邮箱验证码public static boolean sendEmail(String emailaddress,String code) {try {HtmlEmail emai ...

  5. qt服务器和客户端发送消息,qt服务器和客户端发送数值

    qt服务器和客户端发送数值 内容精选 换一换 PL/pgSQL是一种可载入的过程语言.用PL/pgSQL创建的函数可以被用在任何可以使用内建函数的地方.例如,可以创建复杂条件的计算函数并且后面用它们来 ...

  6. Android简单实现Socket通信,客户端连接服务器后,服务器向客户端发送文字数据

    案例实现的是简单的Socket通信,当客户端(Android客户端)连接到指定服务器以后,服务器向客户端发送一句话文字信息(你可以拓展其它的了) 先看一下服务端程序的实现吧 Server.java i ...

  7. Java学习日记8:文件上传工具类的实现和服务器给客户端发送图片

    文件上传的工具类: 每次文件上传要写很多东西,把这些封装成一个工具类,以后用起来就会方便很多. 先创建一个类存储上传文件的信息: package com.upload; /*** 每上传成功一个文件的 ...

  8. Python+Twilio写个exe,在电脑上向手机发送一条短信

    写个exe,在电脑上向手机发送一条短信 用python写的界面 这里需要用到Twilio,下面给出学习路径 源程序 将程序打包成exe 示范一下: 有毒!现在twilio发送中文不行,发英文就没问题了 ...

  9. python发送阿里云短信教程

    python发送阿里云短信教程 1.开通云短信 注册阿里云,开通短信服务. 2.快速学习 进入控制台后,点击左边的快速学习,申请签名,申请模板 签名与模板的生成需要审核,需等待,注意签名与模板作用范围 ...

最新文章

  1. 新闻发布项目——业务逻辑层(newsTbService)
  2. python 中sys.stdout.write 和 print sys.stdout的区别(转)
  3. php7 thinkphp5,thinkphp5+phpstudy+php7.0连接SQL Server 2008 | 睿客网
  4. 【机器学习基础】机器学习模型的度量选择(下)
  5. php join a.id b.id,mysql求助 请问where a.id=b.id 和join on a.id=b.id 在效率上的区别
  6. 武汉火神山医院正式交付,华为提供多项技术支持
  7. centos无法使用ifconfig命令,安装方法
  8. JWT教程_2 SpringSecurity与JWT整合
  9. docker搭建upload-labs
  10. C++ 虚函数和虚函数表
  11. HFSS周期结构超表面结构单元仿真
  12. Python open和with open的区别
  13. Only the original thread that created a view hierarchy can touch its views. 是怎么产生的
  14. Web渗透(九)LDAP注入
  15. 百度开源的 71 个项目,不了解一下?
  16. Error creating bean with name 'redisTemplate' defined in URL
  17. 盘复分支语句和循环语句的那些知识
  18. 读书笔记:《C++ PrimerPlus》 第九章~第十一章
  19. [美文赏析]《非走不可的弯路》--张爱玲
  20. CAR-T疗法新突破

热门文章

  1. 这所211大学计算机学院全面改考408!中国地质大学(武汉)
  2. python字符串驻留机制_python字符串驻留(intern)机制
  3. 短信验证码登录流程思路及详细步骤
  4. 微信小程序云函数调用本地调用返回值中result为undefined
  5. (转)VC++之系统控制之设置显示系统当前时间
  6. python奥运会_用python分析kaggle_奥运会数据的案例
  7. 《精进:如何成为一个很厉害的人》读书笔记
  8. signature=5cb1209670cd93d97d200f9cc5f1d775,Tunable THz generalized Weyl points
  9. Ajax 技术汇总(转载)
  10. vue使用sort实现json数据中字母排序