python使用udp实现聊天器功能


Posted in Python onDecember 10, 2018

聊天器简易版

使用udp实现一个简单的聊天器程序,要求如下:

•在一个电脑中编写1个程序,有2个功能
•1.获取键盘数据,并将其发送给对方
•2.接收数据并显示
•并且功能数据进行选择以上的2个功能调用

例子程序如下:

import socket
def send_message(udp_socket):
    # 输入对方的ip/port
    dest_ip = input("请输入对方的ip:")
    dest_port = int(input("请输入对象的port:"))
    # 读取输入的数据
    send_data = input('请输入要发送的数据:')
    # 发送数据
    dest_addr = (dest_ip, dest_port)
    udp_socket.sendto(send_data.encode('GBK'), dest_addr)
def recv_message(udp_socket):
    # 接收数据
    recv_data = udp_socket.recvfrom(1000)
    print("%s:%s" % (recv_data[1], recv_data[0].decode("utf-8")))  
def main():
    # 创建套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    while True:
        send_message(udp_socket)
        recv_message(udp_socket)
    # 关闭
    udp_socket.close()
if __name__ == '__main__':
    main()

运行程序:

python使用udp实现聊天器功能

在聊天助手中进行交互:

python使用udp实现聊天器功能

聊天器灵活版

上面实现的聊天虽然可以使用,但是不太方便,我们希望是发送消息还是接受消息,可以自己选择,这样就方便的多。如下的程序运行输入三个命令来选择要执行的操作,程序如下:

•1表示发送数据
•2表示接收数据
•0表示退出

import socket
def send_message(udp_socket):
    # 输入对方的ip/port
    dest_ip = input("请输入对方的ip:")
    dest_port = int(input("请输入对象的port:"))
    # 读取输入的数据
    send_data = input('请输入要发送的数据:')
    # 发送数据
    dest_addr = (dest_ip, dest_port)
    udp_socket.sendto(send_data.encode('GBK'), dest_addr)
def recv_message(udp_socket):
    # 接收数据
    recv_data = udp_socket.recvfrom(1000)
    print("%s:%s" % (recv_data[1], recv_data[0].decode("utf-8")))  
def main():
    # 创建套接字
    udp_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    while True:
        op = input("请输入您要执行的操作:")
        if op == "1":
            send_message(udp_socket)
        elif op == "2":
            recv_message(udp_socket)
        elif op == "0":
            break
        else:
            print("您的输入有误!")
    # 关闭
    udp_socket.close()
if __name__ == '__main__':
    main()

在ubuntu安装网络助手

将下载好的网络助手的安装包(mNetAssist-release-amd64.deb)拷贝到桌面,执行如下操作:

$ cd ~/Desktop
$ sudo dpkg -i mNetAssist-release-amd64.deb
[sudo] password for xxxx:
Selecting previously unselected package mnetassist.
(Reading database ... 182763 files and directories currently installed.)
Preparing to unpack mNetAssist-release-amd64.deb ...
Unpacking mnetassist (0.1.1) ...
Setting up mnetassist (0.1.1) ...
Processing triggers for gnome-menus (3.13.3-6ubuntu3.1) ...
Processing triggers for desktop-file-utils (0.22-1ubuntu5.1) ...
Processing triggers for bamfdaemon (0.5.3~bzr0+16.04.20160824-0ubuntu1) ...
Rebuilding /usr/share/applications/bamf-2.index...
Processing triggers for mime-support (3.59ubuntu1) ...

如果没有抱错,安装成功,点击左上角的启动栏,输入mnetAssist

python使用udp实现聊天器功能

点击图标启动应用即可。

总结

以上所述是小编给大家介绍的python使用udp实现聊天器功能,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Python 相关文章推荐
python抓取某汽车网数据解析html存入excel示例
Dec 04 Python
Python 异常处理实例详解
Mar 12 Python
python实现linux服务器批量修改密码并生成execl
Apr 22 Python
Python中内建函数的简单用法说明
May 05 Python
详解duck typing鸭子类型程序设计与Python的实现示例
Jun 03 Python
浅谈Python爬取网页的编码处理
Nov 04 Python
python交易记录整合交易类详解
Jul 03 Python
python列表每个元素同增同减和列表元素去空格的实例
Jul 20 Python
win10下python2和python3共存问题解决方法
Dec 23 Python
Python configparser模块封装及构造配置文件
Aug 07 Python
python3中celery异步框架简单使用+守护进程方式启动
Jan 20 Python
Python采集壁纸并实现炫轮播
Apr 30 Python
Python面向对象之类和对象实例详解
Dec 10 #Python
详解Django-auth-ldap 配置方法
Dec 10 #Python
Python网页正文转换语音文件的操作方法
Dec 09 #Python
python 使用 requests 模块发送http请求 的方法
Dec 09 #Python
Python实现八皇后问题示例代码
Dec 09 #Python
python中的tcp示例详解
Dec 09 #Python
python数据处理 根据颜色对图片进行分类的方法
Dec 08 #Python
You might like
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
Smarty变量用法详解
2016/05/11 PHP
浅谈PHP中的面向对象OOP中的魔术方法
2017/06/12 PHP
php无限级评论嵌套实现代码
2018/04/18 PHP
js中函数声明与函数表达式
2015/06/03 Javascript
jQuery插件HighCharts实现的2D回归直线散点效果示例【附demo源码下载】
2017/03/09 Javascript
Mui使用jquery并且使用点击跳转新窗口的实例
2017/08/19 jQuery
JavaScript实现单击网页任意位置打开新窗口与关闭窗口的方法
2017/09/21 Javascript
Angular2.0实现modal对话框的方法示例
2018/02/18 Javascript
详解express + mock让前后台并行开发
2018/06/06 Javascript
微信小程序自定义底部弹出框
2020/11/16 Javascript
每个 JavaScript 工程师都应懂的33个概念
2018/10/22 Javascript
vue实现todolist功能、todolist组件拆分及todolist的删除功能
2019/04/11 Javascript
使用vue实现各类弹出框组件
2019/07/03 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
js根据后缀判断文件文件类型的代码
2020/05/09 Javascript
在Python下利用OpenCV来旋转图像的教程
2015/04/16 Python
Python中encode()方法的使用简介
2015/05/18 Python
分享一下Python 开发者节省时间的10个方法
2015/10/02 Python
python flask中静态文件的管理方法
2018/03/20 Python
Python多进程原理与用法分析
2018/08/21 Python
Python函数定义及传参方式详解(4种)
2019/03/18 Python
python selenium登录豆瓣网过程解析
2019/08/10 Python
django 实现celery动态设置周期任务执行时间
2019/11/19 Python
Pycharm连接gitlab实现过程图解
2020/09/01 Python
Python3 用matplotlib绘制sigmoid函数的案例
2020/12/11 Python
html5的input的required使用中遇到的问题及解决方法
2018/04/24 HTML / CSS
马德里著名的运动鞋商店:NOIRFONCE
2019/04/12 全球购物
实习自我鉴定范文
2013/10/30 职场文书
校园安全广播稿
2014/02/08 职场文书
领导干部学习“三严三实”思想汇报
2014/09/15 职场文书
文书工作总结(范文)
2019/07/11 职场文书
浅谈MySQL 亿级数据分页的优化
2021/06/15 MySQL
动画《新网球王子 U-17 WORLD CUP》希腊队PV公开
2022/04/02 日漫
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python
浅谈Redis缓冲区机制
2022/06/05 Redis