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实现对比不同字体中的同一字符的显示效果
Apr 23 Python
python类和函数中使用静态变量的方法
May 09 Python
python3+PyQt5自定义视图详解
Apr 24 Python
Python初学者需要注意的事项小结(python2与python3)
Sep 26 Python
Python中利用aiohttp制作异步爬虫及简单应用
Nov 29 Python
python求加权平均值的实例(附纯python写法)
Aug 22 Python
python之yield和Generator深入解析
Sep 18 Python
自定义实现 PyQt5 下拉复选框 ComboCheckBox的完整代码
Mar 30 Python
Python 合并拼接字符串的方法
Jul 28 Python
利用Python pandas对Excel进行合并的方法示例
Nov 04 Python
Python使用openpyxl复制整张sheet
Mar 24 Python
两行代码解决Jupyter Notebook中文不能显示的问题
Apr 24 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
全国FM电台频率大全 - 3 河北省
2020/03/11 无线电
PHP去除数组中重复的元素并按键名排序函数
2008/08/18 PHP
php 文本文件的读取效率
2012/02/10 PHP
PHP输出当前进程所有变量/常量/模块/函数/类的示例
2013/11/07 PHP
PHP获取文件的MD5值并判断是否被修改的例子
2014/06/19 PHP
yii2局部关闭(开启)csrf的验证的实例代码
2017/07/10 PHP
Laravel学习教程之request validation的编写
2017/10/25 PHP
php单元测试phpunit入门实例教程
2017/11/17 PHP
从ThinkPHP3.2.3过渡到ThinkPHP5.0学习笔记图文详解
2019/04/03 PHP
php实现断点续传大文件示例代码
2020/06/19 PHP
云网广告中的代码,提示出错,大家找找
2006/11/21 Javascript
jQuery UI 应用不同Theme的办法
2010/09/12 Javascript
js中符号转意问题示例探讨
2013/08/19 Javascript
jQuery实现鼠标经过图片预览大图效果
2014/04/10 Javascript
jQuery.lazyload+masonry改良图片瀑布流代码
2014/06/20 Javascript
Javascript Memoizer浅析
2014/10/16 Javascript
JQuery插件jcarousellite的参数中文说明
2015/05/11 Javascript
浅析Node.js实现HTTP文件下载
2016/08/05 Javascript
AngularJS过滤器详解及示例代码
2016/08/16 Javascript
Vue实现typeahead组件功能(非常靠谱)
2017/08/26 Javascript
探索webpack模块及webpack3新特性
2017/09/18 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
Vue列表渲染的示例代码
2018/11/01 Javascript
Vue调用后端java接口的实例代码
2019/10/28 Javascript
Python中暂存上传图片的方法
2015/02/18 Python
使用Python的urllib2模块处理url和图片的技巧两则
2016/02/18 Python
用Python抢火车票的简单小程序实现解析
2019/08/14 Python
关于Python字符编码与二进制不得不说的一些事
2020/10/04 Python
工程概预算专业毕业生求职信
2013/10/04 职场文书
大学生的应聘自我评价
2013/12/13 职场文书
总经理的岗位职责
2014/02/23 职场文书
《将心比心》教学反思
2014/04/08 职场文书
大学生军训自我鉴定范文
2014/09/18 职场文书
研究生毕业论文导师评语
2014/12/31 职场文书
Python编程源码报错解决方法总结经验分享
2021/10/05 Python
python编程实现清理微信重复缓存文件
2021/11/01 Python