利用Python来写一个聊天工具!可能下个QQ或者微…
2018-08-10 11:27:15来源:博客园 阅读 ()
用到的库
socket库
进群:548377875 即可获取数十套PDF哦!
先看代码!
TCP服务端
TCP客户端
‘电话’接通后对方就会开始‘说话'(发送了消息),接收消息了recv是接收信息,1024这里需要解释一下,是接收的最大字节(接收到的内容为二进制)。但是细心的读者可能发现了,用send发送的时候并没有设置发送的字节,其实可以更大,最大不要超过8K就可以了。下面解释这个怎么用才能更好。
接收消息了还需要发送信息。发送信息只需要用send就可以发了,但是需要发送二进制的内容。
另外一点要说的是while True的作用,假如有人给我们打电话,那么朋友不会只说一句'你好!',然后你说‘你好’就挂电话吧,所以需要循环接收和发送。
3
网络通讯底层逻辑
这里我想我可以详细讲解一下底层逻辑,因为这可以帮助我们在出现问题的时候可以更快的找到处理方法。
通讯协议可以分为两种:
①TCP协议
类似这样。每个send是进行两个操作,将东西放在自己的内存里,然后传输过去。而接收只在自己的内存里面拿东西,而发送端发送的内容如果很大会怎么办呢,接收端限制了大小,会出现‘粘包’的现象,就是说自己的内存里面还有多余的东西没有拿完。如果这个时候接收端继续接收信息的话,会从内存中取出上次没有取完的,打个比方,我两个桶中间有个很大的盆(内存)做过度,我这边发送端把水(信息)先用管子(TCP)导入到你的盆里面,但是你接受的时候只倒了一半的水走,还有一半就留在了盆里,下次再有水导过来的时候,会首先将之前的水倒到桶里,然后再看有没有接收新的水的内存来接收新的内存。
发送端
这是一种简单的处理方式,就是先告诉接收端要接收多少东西,然后再传入
②UDP协议
UDP (User Datagram Protocol),是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
这个相对TCP来说相对简单些,无需用户先连接再发送信息,而是用sendto('二进制信息‘,(ip,port))来传输信息,UDP是可以直接多用户同时进行交流。个人觉得这个协议没有TCP快捷。下次再进行介绍吧!有兴趣的小伙伴可以自己看看!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash