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函数中return后的语句一定不会执行吗?
Jul 06 Python
python实现微信接口(itchat)详细介绍
Oct 23 Python
Python基于回溯法解决01背包问题实例
Dec 06 Python
python中找出numpy array数组的最值及其索引方法
Apr 17 Python
python实现海螺图片的方法示例
May 12 Python
在python中,使用scatter绘制散点图的实例
Jul 03 Python
python opencv将表格图片按照表格框线分割和识别
Oct 30 Python
Python包,__init__.py功能与用法分析
Jan 07 Python
VScode连接远程服务器上的jupyter notebook的实现
Apr 23 Python
Python matplotlib 绘制双Y轴曲线图的示例代码
Jun 12 Python
Python从文件中读取数据的方法步骤
Nov 18 Python
python爬虫爬取图片的简单代码
Jan 18 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编程效率技巧
2015/08/13 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
PHP如何通过表单直接提交大文件详解
2019/01/08 PHP
return false,对阻止事件默认动作的一些测试代码
2010/11/17 Javascript
js禁止页面刷新禁止用F5键刷新禁止右键的示例代码
2013/09/23 Javascript
单击和双击事件的冲突处理示例代码
2014/04/03 Javascript
JavaScript获取某年某月的最后一天附截图
2014/06/23 Javascript
在ASP.NET MVC项目中使用RequireJS库的用法示例
2016/02/15 Javascript
Javascript打印局部页面实例
2016/06/21 Javascript
jQuery生成假加载动画效果
2016/12/01 Javascript
AngularJS改变元素显示状态
2017/04/20 Javascript
vue实现留言板todolist功能
2017/08/16 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
vue多次循环操作示例
2019/02/08 Javascript
详解微信小程序自定义组件的实现及数据交互
2019/07/22 Javascript
Vue.js组件使用props传递数据的方法
2019/10/19 Javascript
解决vue项目input输入框双向绑定数据不实时生效问题
2020/08/05 Javascript
vue单元格多列合并的实现
2020/11/26 Vue.js
[01:55]2014DOTA2国际邀请赛快报:国土生病 紧急去医院治疗
2014/07/10 DOTA
[43:48]Ti4正赛第一天 VG vs NEWBEE 2
2014/07/19 DOTA
教你用Type Hint提高Python程序开发效率
2016/08/08 Python
python中常用的九种预处理方法分享
2016/09/11 Python
Python实现的简单排列组合算法示例
2018/07/04 Python
详解python:time模块用法
2019/03/25 Python
OpenCV+face++实现实时人脸识别解锁功能
2019/08/28 Python
结合OpenCV与TensorFlow进行人脸识别的实现
2019/10/10 Python
Python爬虫定时计划任务的几种常见方法(推荐)
2021/01/15 Python
CSS3实现10种Loading效果
2016/07/11 HTML / CSS
美国精品家居用品网站:US-Mattress
2016/08/24 全球购物
技术总监个人的自我评价范文
2013/12/18 职场文书
大一学生职业生涯规划
2014/03/11 职场文书
父母对孩子说的话
2014/04/12 职场文书
英语演讲稿3分钟
2014/04/29 职场文书
离职证明标准格式
2014/09/15 职场文书
HTML5基础学习之文本标签控制
2022/03/25 HTML / CSS
SONY600GR,国产收音机厂商永远的痛
2022/04/05 无线电