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增量循环删除MySQL表数据的方法
Sep 23 Python
Python线性方程组求解运算示例
Jan 17 Python
pandas 两列时间相减换算为秒的方法
Apr 20 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
Jun 04 Python
Python寻找两个有序数组的中位数实例详解
Dec 05 Python
Ubuntu下升级 python3.7.1流程备忘(推荐)
Dec 10 Python
Python中请不要再用re.compile了
Jun 30 Python
详解Python绘图Turtle库
Oct 12 Python
Python嵌套函数,作用域与偏函数用法实例分析
Dec 26 Python
python随机模块random使用方法详解
Feb 14 Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
Mar 05 Python
Python学习之异常中的finally使用详解
Mar 16 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
使用URL传输SESSION信息
2015/07/14 PHP
PHP文件操作详解
2016/12/30 PHP
Yii2实现ActiveForm ajax提交
2017/05/26 PHP
总结PHP中初始化空数组的最佳方法
2019/02/13 PHP
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
超链接的禁用属性Disabled使用示例
2014/07/31 Javascript
JS的location.href跳出框架打开新页面的方法
2014/09/04 Javascript
JavaScript中的Web worker多线程API研究
2014/12/06 Javascript
Jquery插件实现点击获取验证码后60秒内禁止重新获取
2015/03/13 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
JavaScrpt中如何使用 cookie 设置查看与删除功能
2017/07/09 Javascript
nodejs动态创建二维码的方法
2017/08/12 NodeJs
使用Object.defineProperty如何巧妙找到修改某个变量的准确代码位置
2018/11/02 Javascript
使用ThinkJs搭建微信中控服务的实现方法
2019/08/08 Javascript
layui表格 返回的数据状态异常的解决方法
2019/09/10 Javascript
vue商城中商品“筛选器”功能的实现代码
2020/07/01 Javascript
Python使用scrapy采集数据时为每个请求随机分配user-agent的方法
2015/04/08 Python
Python中__name__的使用实例
2015/04/14 Python
用于统计项目中代码总行数的Python脚本分享
2015/04/21 Python
python 3.6 tkinter+urllib+json实现火车车次信息查询功能
2017/12/20 Python
基于PyQt4和PySide实现输入对话框效果
2019/02/27 Python
python实现两个dict合并与计算操作示例
2019/07/01 Python
python原类、类的创建过程与方法详解
2019/07/19 Python
使用Tensorboard工具查看Loss损失率
2020/02/15 Python
解决c++调用python中文乱码问题
2020/07/29 Python
HTML5之SVG 2D入门8—文档结构及相关元素总结
2013/01/30 HTML / CSS
蒙蒂塞罗商店:Monticello Shop
2018/11/25 全球购物
广州品高软件.net笔面试题目
2012/04/18 面试题
学前教育求职自荐信范文
2013/12/25 职场文书
班组安全员工作职责
2014/02/01 职场文书
学生安全教育材料
2014/02/14 职场文书
制药工程专业职业生涯规划范文
2014/03/10 职场文书
离婚协议书格式
2015/01/26 职场文书
小学英语课教学反思
2016/02/15 职场文书
python文件名批量重命名脚本实例代码
2021/04/22 Python
Java无向树分析 实现最小高度树
2022/04/09 Javascript