Python制作简易聊天器,搭建UDP网络通信模型

 更新时间:2022年01月25日 15:40:23   作者:松鼠爱吃饼干   
这篇文章主要介绍了Python制作简易聊天器,搭建UDP网络通信模型,用UDP建立网络模型来完成一个简单的聊天器,感兴趣的小伙伴可以参考一下,希望对你有所帮助

前言:

互联网的本质是什么?其实就是信息的交换。就比如我们常用的QQ、微信等。那么如何将自己的信息发送到其他人的电脑上呢?

那就需要借助网络模型来完成这样的事情了。今天就带领大家使用UDP网络模型来完成一个简单的聊天器

分享内容:

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

环境:

  • windows
  • Ubuntu
  • python3
  • pycharm

1.导入模块

import socket

socket是套接字,链接电脑并且接收/发送消息的一个对象

socket有两种类型:udptcp

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

2.创建一个套接字对象

def main():
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

udp需要借助网络:IP协议
IP协议分为两种:IPv4和IPv6
PC电脑采取的是IPv4,IPv6一般是移动端使用:手机

3.发送数据到ubuntu系统中

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

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

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()

5.循环发送数据

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":
            break

    udp_socket.close()

6.循环接受数据

绑定本机信息 告诉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_data
    print(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')
    print(recv_msg)

发送 / 接收 功能:

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('输入有误, 请重新输入...')

7.启动

if __name__ == '__main__':
    main()

最后运行代码

发送消息:

接收消息:

到此这篇关于Python制作简易聊天器,搭建UDP网络通信模型的文章就介绍到这了,更多相关Python制作简易聊天器 内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python如何对链表操作

    python如何对链表操作

    这篇文章主要介绍了python如何对链表操作,帮助大家更好的理解和使用python,感兴趣的朋友可以了解下
    2020-10-10
  • Python网络安全格式字符串漏洞任意地址覆盖大数字详解

    Python网络安全格式字符串漏洞任意地址覆盖大数字详解

    这篇文章主要介绍了Python网络安全格式字符串漏洞任意地址覆盖大数字的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • Python多线程以及多线程中join()的使用方法示例

    Python多线程以及多线程中join()的使用方法示例

    join()是线程类Thread的方法,官方的说明是:等待这个线程结束,也就是说当前线程等待这个线程结束后再继续执行,这篇文章主要给大家介绍了关于Python多线程以及多线程中join()使用的相关资料,需要的朋友可以参考下
    2021-07-07
  • Python强化练习之PyTorch opp算法实现月球登陆器

    Python强化练习之PyTorch opp算法实现月球登陆器

    在面向对象出现之前,我们采用的开发方法都是面向过程的编程(OPP)。面向过程的编程中最常用的一个分析方法是“功能分解”。我们会把用户需求先分解成模块,然后把模块分解成大的功能,再把大的功能分解成小的功能,整个需求就是按照这样的方式,最终分解成一个一个的函数
    2021-10-10
  • Python中的map()函数和reduce()函数的用法

    Python中的map()函数和reduce()函数的用法

    这篇文章主要介绍了Python中的map()函数和reduce()函数的用法,代码基于Python2.x版本,需要的朋友可以参考下
    2015-04-04
  • 在Pycharm中调试Django项目程序的操作方法

    在Pycharm中调试Django项目程序的操作方法

    今天小编就为大家分享一篇在Pycharm中调试Django项目程序的操作方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-07-07
  • 浅析python打包工具distutils、setuptools

    浅析python打包工具distutils、setuptools

    python包在开发中十分常见,一般的使用套路是所有的功能做一个python模块包,打包模块,然后发布,安装使用。这篇文章给大家介绍了python打包工具distutils、setuptools的相关知识,感兴趣的朋友一起看看吧
    2018-04-04
  • Python中super的用法实例

    Python中super的用法实例

    这篇文章主要介绍了Python中super的用法实例,本文对比了普通继承和super继承的相关内容,从运行结果上看,普通继承和super继承是一样的,但是其实它们的内部运行机制不一样,这一点在多重继承时体现得很明显,需要的朋友可以参考下
    2015-05-05
  • Python如何导出导入所有依赖包详解

    Python如何导出导入所有依赖包详解

    在Python中我们在项目中会用到各种库,自带的自然不必再说,这篇文章主要给大家介绍了关于Python如何导出导入所有依赖包的相关资料,需要的朋友可以参考下
    2021-06-06
  • Python OpenCV绘制各类几何图形详解

    Python OpenCV绘制各类几何图形详解

    这篇文章将详细讲解如何使用OpenCV绘制各类几何图形,包括cv2.line()、v2.circle()、cv2.rectangle()、cv2.ellipse()、cv2.polylines()、cv2.putText()函数。需要的可以参考一下
    2022-01-01

最新评论