python实现udp聊天窗口


Posted in Python onMarch 31, 2020

要与对方实现通讯,有udp和tcp两种方式,像我们的qq,就是udp和tcp两种方式共存的,不过现在qq正在逐步的转化为tcp服务器。

下面是,用udp实现的聊天窗口.

import socket
def send_msg(upd_socket):
 """发送消息"""
 # 获取要发送的内容
 dest_ip = input("请输入对方的ip地址:")
 dest_port = int(input("请输入对方的端口号:"))
 send_data = input("请输入要发送的消息")
 upd_socket.sendto(send_data.encode("utf-8"), (dest_ip, dest_port))
def recv_msg(upd_socket):
 # 接收数据和显示
 recv_data = upd_socket.recvfrom(1024)
 print("%s:%s" % (recv_data[0].decode("utf-8"), str(recv_data[1])))
def main():
 # 创建套接字
 upd_socket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
 # 绑定信息
 upd_socket.bind("", 7788)
 # 循环来进行处理事情
 while True:
  send_msg(upd_socket)
  recv_msg(upd_socket)
if __name__ == "__main__":
 main()

给大家推荐一种写代码的格式,像这样,我们首先构建好基本框架

def main():
 pass
 # 1.创建套接字
 # 2.绑定本地信息
 # 3.知道目标地址和端口号
 # 4.接收数据与显示
 # 5.关闭套接字
if __name__ == "__main__":
 main()

1. 这个是基本的步骤,我们首先构思好了,于是乎我们就开始写代表.代码相对比较固定,我们需要质疑的是,我们发送和接收数据的时候,是采用utf-8还是gbk的问题,假设我们是linux系统,目标是Windows系统,那么我们发送的数据是需要采用.encode(“gbk”)进行编码,而我们接受数据的时候,是.decode(“gbk”)进行解码,这样才能正确接受中文汉字.

2. 然后是为了使我们主程序看起来更加清晰,我们将发送消息和接受消息,包装成两个函数,分别是 def send_msg(upd_socket): def recv_msg(upd_socket): 注意,每当我们创建一个新的函数的时候,我们一定要想,这个函数需不需要参数.

3. 你可能会看到最后,发现我并没有写udp_socket.close()来关闭套接字,因为我们写到最后就会发现,我们并不需要调用close.

4. 在pyhton中,我们使用一个循环的时候,不要写1,要写True

更多关于python聊天功能的精彩文章请点击专题: python聊天功能汇总

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python读取MRI并显示为灰度图像实例代码
Jan 03 Python
Python实现将json文件中向量写入Excel的方法
Mar 26 Python
Python 在字符串中加入变量的实例讲解
May 02 Python
Python基于多线程操作数据库相关问题分析
Jul 11 Python
Django contenttypes 框架详解(小结)
Aug 13 Python
Python后台开发Django的教程详解(启动)
Apr 08 Python
基于多进程中APScheduler重复运行的解决方法
Jul 22 Python
Python csv文件的读写操作实例详解
Nov 19 Python
Python使用sys.exc_info()方法获取异常信息
Jul 23 Python
pycharm导入源码的具体步骤
Aug 04 Python
详解python UDP 编程
Aug 24 Python
Python自动化xpath实现自动抢票抢货
Sep 19 Python
浅谈在django中使用filter()(即对QuerySet操作)时踩的坑
Mar 31 #Python
Python sorted排序方法如何实现
Mar 31 #Python
解决Django中checkbox复选框的传值问题
Mar 31 #Python
Python文本文件的合并操作方法代码实例
Mar 31 #Python
Python调用接口合并Excel表代码实例
Mar 31 #Python
Python如何批量获取文件夹的大小并保存
Mar 31 #Python
Django使用list对单个或者多个字段求values值实例
Mar 31 #Python
You might like
php中邮箱地址正则表达式实现与详解
2012/04/24 PHP
PHP数据类型之整数类型、浮点数的介绍
2013/04/28 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
2016/03/08 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
YII框架页面缓存操作示例
2019/04/29 PHP
JS判断是否为数字,是否为整数,是否为浮点数的代码
2010/04/24 Javascript
javascript通过navigator.userAgent识别各种浏览器
2013/10/25 Javascript
简单的代码实现jquery定时器
2014/01/03 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
jquery+CSS3模拟Path2.0动画菜单效果代码
2015/08/31 Javascript
JavaScript的Backbone.js框架入门学习指引
2016/05/07 Javascript
jquery popupDialog 使用 加载jsp页面的方法
2016/10/25 Javascript
javascript基础知识讲解
2017/01/11 Javascript
原生js轮播(仿慕课网)
2017/02/15 Javascript
详解vue-cli + webpack 多页面实例应用
2017/04/25 Javascript
Bootstrap Table使用整理(四)之工具栏
2017/06/09 Javascript
Vue中的Props(不可变状态)
2018/09/29 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
微信小程序实现时间进度条功能
2020/11/17 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
Python使用defaultdict读取文件各列的方法
2017/05/11 Python
python函数中return后的语句一定不会执行吗?
2017/07/06 Python
python 定时任务去检测服务器端口是否通的实例
2019/01/26 Python
python实现AES加密解密
2019/03/28 Python
谈一谈基于python的面向对象编程基础
2019/05/21 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
Python 中的 import 机制之实现远程导入模块
2019/10/29 Python
Django 批量插入数据的实现方法
2020/01/12 Python
PyCharm中关于安装第三方包的三个建议
2020/09/17 Python
手把手教你从PyCharm安装到激活(最新激活码),亲测有效可激活至2089年
2020/11/25 Python
python全栈开发语法总结
2020/11/22 Python
Opencv 图片的OCR识别的实战示例
2021/03/02 Python
数据员岗位职责
2013/11/19 职场文书
党的群众路线对照检查材料思想汇报
2014/09/25 职场文书
基于Nginx实现限制某IP短时间访问次数
2021/03/31 Servers
IDEA使用SpringAssistant插件创建SpringCloud项目
2021/06/23 Java/Android