互联网的本质是什么?

其实就是信息的交换。

就比如我们常用的QQ、微信等。

那么如何将自己的信息发送到其他人的电脑上呢?

那就需要借助网络模型来完成这样的事情了。

今天就带领大家使用UDP网络模型来完成一个简单的聊天器


有什么python相关报错解答自己不会的、或者源码资料/模块安装/女装大佬精通技巧 都可以来这里:(https://jq.qq.com/?_wv=1027&k=dwzSWSBK)或者+V:python10010问我

分享内容

python中的套接字实现
如何与Ubuntu建立通信
发送/接收消息

环境

  • windows
  • Ubuntu
  • python3
  • pycharm

导入模块

import socket

socket是套接字,链接电脑并且接收/发送消息的一个对象
socket有两种类型:udp 和 tcp

  • udp比较简单 不安全 丢包的情况 速度快
  • tcp比较复杂的网络模型 安全 速度慢

创建一个套接字对象

def main():udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
  • udp需要借助网络:IP协议
  • IP协议分为两种:IPv4和IPv6
  • PC电脑采取的是IPv4,IPv6一般是移动端使用:手机

发送数据到ubuntu系统中

udp_socket.sendto(b'hello python', ('192.168.3.40', 8080))
udp_socket.close()

发送任意数据给网络条数助手

def main():udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)send_data = input('请输入任意字符:')udp_socket.sendto(send_data.encode('utf-8'), ('192.168.3.40', 8080))udp_socket.close()

循环发送数据

def main():# 创建套接字udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)# 循环发送while True:send_data = input('请输入你想要发送的数据:')udp_socket.sendto(send_data.encode('utf-8'), ('192.168.3.40', 8080))if send_data == "exit":breakudp_socket.close()

循环接受数据

绑定本机信息 告诉ubuntu我的当前地址以及端口

def main():udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)localhost_addr = ('', 6666)udp_socket.bind(localhost_addr)

循环接收

while True:recv_data = udp_socket.recvfrom(1024)# 元组解包recv_msg, recv_addr = recv_dataprint(recv_msg.decode('utf-8'), recv_addr)

将相关的功能抽离出来做成一个函数

发送消息

def send_msg(udp_socket):msg = input('请输入你想要发送的消息:')udp_socket.sendto(msg.encode('utf-8'), ('192.168.3.40', 8080))

接收消息

def recv_msg(udp_socket):# 接收msg = udp_socket.recvfrom(1024)# 解码recv_msg = msg[0].decode('utf-8')

发送 / 接收 功能

def main():udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)udp_socket.bind(('', 6666))while True:op_num = input('请输入要操作的功能序号 [1.发送消息 2.接收消息]:' )# 根据用户输入的数字去调用相关的功能if op_num == "1":send_msg(udp_socket)elif op_num == "2":recv_msg(udp_socket)else:print('输入有误, 请重新输入...')

启动

if __name__ == '__main__':main()

最后运行代码

发送消息

接收消息



今天的这个私人聊天器我个人觉得还蛮有意思der ~ ~ ~

都看到这里啦,点个赞不过分吧~

Python搭建UDP网络通信模型,制作一个简单的私人聊天器~相关推荐

  1. 使用Python制作一个简单的刷博器

    呵呵,不得不佩服Python的强大,寥寥几句代码就能做一个简单的刷博器. import webbrowser as web import time import oscount=0 while cou ...

  2. Python:通过网络爬虫实现一个简易控制台音乐播放器

    hello,大家好,我是wangzirui32,今天我们来学习如何通过网络爬虫实现一个简易控制台音乐播放器,开始学习吧! 1. 项目结构及库准备 app.py为项目入口程序,download.py为音 ...

  3. 制作一个简单的照片查看器(支持缩放手势)

    本文主要实现的功能是制作一个照片查看器,点击照片能进入大图模式,支持左右滑动,支持手势缩放, 本文只演示1张图和3张图的效果,其他的效果分为为: 2张图的时候按照1行2列展示, 3张图的时候按照1行3 ...

  4. openGL ES进阶教程(五)制作一个简单的VR播放器,播放全景视频

    之前写过全景(VR)图片,和用openGL ES+MediaPlayer 渲染播放视频+滤镜效果 这一篇就在之前的基础上实现一个最简单的VR播放器,播放全景视频. 概述: 全景视频是一种用3D摄像机进 ...

  5. 微信小程序 用wx.getRecorderManager()和wx.createInnerAudioContext()制作一个简单的录音播放器(录制以及播放)

    在开发的时候公司提出了一个如题的要求,发现微信官方文档里好像没有相关的组件,就自己做了一个简单的,可以实现用户录制音频,播放和暂停的需求.放上来供大家参考 预览 wxml <view>&l ...

  6. 制作一个简单的FLV播放器 【转】

    我们将制作的这个FLV播放器由这样几部分组成: 一个用于显示视频图像的视频对象, 三个分别用于播放.暂停和停止视频的按钮, 以及一个用于显示缓冲区装载进度的动态文本. 1. 创建三个按钮元件,分别命名 ...

  7. php百度大脑,百度大脑和图灵机器人制作一个简单的自动聊天机器人【PHP代码】...

    可以和机器人聊天 文字发送消息 网页进行语音回复 这里主要用到了两个接口 一个是百度大脑  用来实现语音合成 一个是图灵机器人用来实现自动聊天 以下是代码分两个版本 版本一是没有语音合成 版本二是加上 ...

  8. 制作一个简单的音乐播放器

    舞台布置及所加的元件如下图 然后直接在放代码即可. //声明 var jzdz:URLRequest=new URLRequest("http://59.52.188.151/s2.mp3& ...

  9. 【QT学习】制作一个简单的图片查看器(完整源码)

最新文章

  1. zookeeper 分布式过程协同技术详解.pdf_阿里大牛耗时18个月整理这份ZooKeeper分布式详解文档...
  2. 引入spring-boot-starter-actuator,控制台没有mapper的映射信息打印问题
  3. mysql 查询临时表列名_为什么mysql会缓存被删除的临时表的列名?
  4. MSSQL-to-MySQL v5.3, 从MSSQL迁移到mySQL的最佳工具
  5. java基础—文件的切割与合并
  6. Photoshop修复和合成梦幻人物
  7. 工作中 linux 常用命令:vi、cp、mv、rm、kill、curl、tail
  8. 《从零开始学Swift》学习笔记(Day 45)——重写方法
  9. 实现数组头尾两端元素对调代码
  10. 高斯克吕格投影 python2.x 版本
  11. pm模式 raid_Adaptec RAID PM8060 用户手册.pdf
  12. word文档docx转为pdf文件,在Linux操作系统上也能正常显示中文
  13. 使用JS与jQuery实现文字逐渐出现特效
  14. 斗鱼直播弹幕python_调用斗鱼API爬取直播间弹幕信息(用户昵称及弹幕内容)
  15. iVMS-4200 Vs区别_菲尔·杰克逊揭示了迈克尔·乔丹和科比·布莱恩特之间的关键区别...
  16. python 3 12306余票查询脚本
  17. CSS4day(圆角边框,阴影,浮动详解及其示例)
  18. 交付管理——怎样管控项目成本
  19. (信贷风控八)行为评分卡模型(B卡)的介绍
  20. 动态规划最好的讲解之一 | 算法干货

热门文章

  1. 51nod-1535 深海探险
  2. Doris Connector 结合 Flink CDC 实现 MySQL 分库分表 Exactly Once精准接入
  3. java 文件夹打包成zip(带有嵌套的那种文件夹)
  4. python基础笔记(二)
  5. 如何改变关系热图的色阶(plotly)
  6. 如何利用附近小程序推广自己的小程序
  7. 详解babel的配置文件.babelrc
  8. .babelrc 文件
  9. 国家政策对计算机编程政策,孩子的未来道路!2019年,国家为编程教育发布的22项政策都在这了...
  10. 异常检测/离群点检测算法汇总