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下的subprocess模块的入门指引
Apr 16 Python
Python基本语法经典教程
Mar 11 Python
Python实现树的先序、中序、后序排序算法示例
Jun 23 Python
Python开发SQLite3数据库相关操作详解【连接,查询,插入,更新,删除,关闭等】
Jul 27 Python
django中的setting最佳配置小结
Nov 21 Python
pip install urllib2不能安装的解决方法
Jun 12 Python
Python第三方Window模块文件的几种安装方法
Nov 22 Python
Python实现随机创建电话号码的方法示例
Dec 07 Python
Python生成一个迭代器的实操方法
Jun 18 Python
Pytorch 实现sobel算子的卷积操作详解
Jan 10 Python
解决jupyter notebook import error但是命令提示符import正常的问题
Apr 15 Python
520使用Python实现“我爱你”表白
May 20 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
不使用php api函数实现数组的交换排序示例
2014/04/13 PHP
php+mysqli数据库连接的两种方式
2015/01/28 PHP
php微信浏览器分享设置以及回调详解
2016/08/01 PHP
PHP写的简单数字验证码实例
2017/05/23 PHP
疯狂Jquery第一天(Jquery学习笔记)
2012/05/11 Javascript
js自定义事件及事件交互原理概述(二)
2013/02/01 Javascript
如何在JavaScript中实现私有属性的写类方式(一)
2013/12/04 Javascript
jQuery中操控hidden、disable等无值属性的方法
2014/01/06 Javascript
js如何获取object类型里的键值
2014/02/18 Javascript
table行随鼠标移动变色示例
2014/05/07 Javascript
jQuery中:first选择器用法实例
2014/12/30 Javascript
JavaScript实现鼠标滑过图片变换效果的方法
2015/04/16 Javascript
js实现获取div坐标的方法
2015/11/16 Javascript
JS实现支持Ajax验证的表单插件
2016/03/24 Javascript
JavaScript位移运算符(无符号) >>> 三个大于号 的使用方法详解
2016/03/31 Javascript
详解angular2采用自定义指令(Directive)方式加载jquery插件
2017/02/09 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
Vuex之理解Store的用法
2017/04/19 Javascript
基于jquery实现多选下拉列表
2017/08/02 jQuery
浅谈webpack SplitChunksPlugin实用指南
2018/09/17 Javascript
vue开发中遇到的问题总结
2020/04/07 Javascript
python学习基础之循环import及import过程
2018/04/22 Python
pandas.read_csv参数详解(小结)
2019/06/21 Python
Python使用进程Process模块管理资源
2020/03/05 Python
浅析NumPy 切片和索引
2020/09/02 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
英国最大的宝石首饰超市:QP Jewellers
2018/09/23 全球购物
英国在线购买马术服装:EQUUS
2019/07/12 全球购物
远东集团网络工程师面试题
2014/10/20 面试题
销售人员获奖感言
2014/02/05 职场文书
英文请假条
2014/04/11 职场文书
争先创优公开承诺书
2014/08/30 职场文书
初级党校心得体会
2014/09/11 职场文书
教师查摆问题自查报告
2014/10/11 职场文书
学习焦裕禄观后感
2015/06/09 职场文书
2019年年中职场激励人心语录30条
2019/08/07 职场文书