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完全新手教程
Feb 08 Python
python实现根据月份和日期得到星座的方法
Mar 27 Python
Python下Fabric的简单部署方法
Jul 14 Python
详解python异步编程之asyncio(百万并发)
Jul 07 Python
Python使用pyautogui模块实现自动化鼠标和键盘操作示例
Sep 04 Python
用于业余项目的8个优秀Python库
Sep 21 Python
Django组件之cookie与session的使用方法
Jan 10 Python
Python生成一个迭代器的实操方法
Jun 18 Python
Python2和Python3中@abstractmethod使用方法
Feb 04 Python
python 3.8.3 安装配置图文教程
May 21 Python
python如何将图片转换素描画
Sep 08 Python
Python项目打包成二进制的方法
Dec 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
收集的DedeCMS一些使用经验
2007/03/17 PHP
php中cookie实现二级域名可访问操作的方法
2014/11/11 PHP
PHP判断文件是否被引入的方法get_included_files用法示例
2016/11/29 PHP
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
单击复制文字兼容各浏览器的完美解决方案
2013/07/04 Javascript
详解addEventListener的三个参数之useCapture
2015/03/16 Javascript
NodeJs中的VM模块详解
2015/05/06 NodeJs
javascript实现Table排序的方法
2015/05/15 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
iscroll.js的上拉下拉刷新时无法回弹的解决方法
2016/02/18 Javascript
React.js入门实例教程之创建hello world 的5种方式
2016/05/11 Javascript
防止Node.js中错误导致进程阻塞的办法
2016/08/11 Javascript
Node.js复制文件的方法示例
2016/12/29 Javascript
bootstrap IE8 兼容性处理
2017/03/22 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
微信小程序 自定义消息提示框
2017/08/06 Javascript
Vue侦测相关api的实现方法
2019/05/22 Javascript
react实现移动端下拉菜单的示例代码
2020/01/16 Javascript
JS如何实现在弹出窗口中加载页面
2020/12/03 Javascript
vue下拉刷新组件的开发及slot的使用详解
2020/12/23 Vue.js
python实现多线程的两种方式
2016/05/22 Python
django 修改server端口号的方法
2018/05/14 Python
一篇文章搞懂Python的类与对象名称空间
2018/12/10 Python
django获取from表单multiple-select的value和id的方法
2019/07/19 Python
python 爬取学信网登录页面的例子
2019/08/13 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
深入浅析python变量加逗号,的含义
2020/02/22 Python
Django中的模型类设计及展示示例详解
2020/05/29 Python
基于Python词云分析政府工作报告关键词
2020/06/02 Python
python实现简单的五子棋游戏
2020/09/01 Python
CSS3实现多重边框的方法总结
2016/05/31 HTML / CSS
台湾全方位线上课程与职能学习平台:TibaMe
2019/12/04 全球购物
公务员职务工作的自我评价
2013/11/01 职场文书
幼儿园毕业教师感言
2014/02/21 职场文书
《太阳》教学反思
2014/02/21 职场文书
用Python爬取某乎手机APP数据
2021/06/15 Python