美文网首页Python新世界
利用Python来写一个聊天工具!可能下个QQ或者微信会是你开发

利用Python来写一个聊天工具!可能下个QQ或者微信会是你开发

作者: 919b0c54458f | 来源:发表于2018-08-08 14:42 被阅读12次

    用到的库

    socket库

    进群:125240963  即可获取数十套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快捷。下次再进行介绍吧!有兴趣的小伙伴可以自己看看!

    相关文章

      网友评论

        本文标题:利用Python来写一个聊天工具!可能下个QQ或者微信会是你开发

        本文链接:https://www.haomeiwen.com/subject/ivatbftx.html