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 yield 小结和实例
Apr 25 Python
用Python编写一个简单的Lisp解释器的教程
Apr 03 Python
Python去除字符串两端空格的方法
May 21 Python
解析Python编程中的包结构
Oct 25 Python
Python使用time模块实现指定时间触发器示例
May 18 Python
解读python logging模块的使用方法
Apr 17 Python
numpy的文件存储.npy .npz 文件详解
Jul 09 Python
3分钟学会一个Python小技巧
Nov 23 Python
Linux下升级安装python3.8并配置pip及yum的教程
Jan 02 Python
Python实现投影法分割图像示例(一)
Jan 17 Python
tensorflow 限制显存大小的实现
Feb 03 Python
Python代码,能玩30多款童年游戏!这些有几个是你玩过的
Apr 27 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
DOTA2 玩家自创拉野攻略 特色英雄快速成长篇
2020/04/20 DOTA
用windows下编译过的eAccelerator for PHP 5.1.6实现php加速的使用方法
2007/09/30 PHP
zf框架的校验器InArray使用示例
2014/03/13 PHP
php求正负数数组中连续元素最大值示例
2014/04/11 PHP
PHP检测移动设备类mobile detection使用实例
2014/04/14 PHP
Laravel5.7框架安装与使用学习笔记图文详解
2019/04/02 PHP
JavaScript面向对象程序设计三 原型模式(上)
2011/12/21 Javascript
JavaScript中number转换成string介绍
2014/12/31 Javascript
javascript实现checkBox的全选,反选与赋值
2015/03/12 Javascript
XML文件转化成NSData对象的方法
2015/08/12 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
浅谈js函数的多种定义方法与区别
2016/11/29 Javascript
javascript验证香港身份证的格式或真实性
2017/02/07 Javascript
Webpack打包慢问题的完美解决方法
2017/03/16 Javascript
Vue框架中正确引入JS库的方法介绍
2017/07/30 Javascript
详解vue中localStorage的使用方法
2018/11/22 Javascript
JavaScript时间与时间戳的转换操作实例分析
2018/12/07 Javascript
Vue自定义指令上报Google Analytics事件统计的方法
2019/02/25 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
2019/07/25 Javascript
vue动态禁用控件绑定disable的例子
2019/10/28 Javascript
解决ant Design中Select设置initialValue时的大坑
2020/10/29 Javascript
json.stringify()与json.parse()的区别以及用处
2021/01/25 Javascript
django模型中的字段和model名显示为中文小技巧分享
2014/11/18 Python
浅谈Python中eval的强大与危害
2019/03/13 Python
Python opencv实现人眼/人脸识别以及实时打码处理
2019/04/29 Python
用Q-learning算法实现自动走迷宫机器人的方法示例
2019/06/03 Python
Python接口自动化判断元素原理解析
2020/02/24 Python
大学生如何写自荐信
2014/01/08 职场文书
大二自我鉴定
2014/01/31 职场文书
2014年惩防体系建设工作总结
2014/12/01 职场文书
入党现实表现材料
2014/12/23 职场文书
出生证明范本
2015/06/15 职场文书
来探秘“德国中小企业”的成功之道
2019/07/26 职场文书
redis客户端实现高可用读写分离的方式详解
2021/07/04 Redis
如何使用SQL Server语句创建表
2022/04/12 SQL Server
SQL中的连接查询详解
2022/06/21 SQL Server