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当中的字符串和编码
Apr 25 Python
Python将阿拉伯数字转换为罗马数字的方法
Jul 10 Python
深入理解python函数递归和生成器
Jun 06 Python
浅谈python 里面的单下划线与双下划线的区别
Dec 01 Python
Python实现的生成格雷码功能示例
Jan 24 Python
Python实现的求解最大公约数算法示例
May 03 Python
python2与python3中关于对NaN类型数据的判断和转换方法
Oct 30 Python
python实现文件助手中查看微信撤回消息
Apr 29 Python
TensorFlow tensor的拼接实例
Jan 19 Python
tensorflow estimator 使用hook实现finetune方式
Jan 21 Python
在 Pycharm 安装使用black的方法详解
Apr 02 Python
python-for x in range的用法(注意要点、细节)
May 10 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
我的论坛源代码(十)
2006/10/09 PHP
全新的PDO数据库操作类php版(仅适用Mysql)
2012/07/22 PHP
PHP + plupload.js实现多图上传并显示进度条加删除实例代码
2017/03/06 PHP
php基于自定义函数记录log日志方法
2017/07/21 PHP
TP(thinkPHP)框架多层控制器和多级控制器的使用示例
2018/06/13 PHP
使用Zookeeper分布式部署PHP应用程序
2019/03/15 PHP
PHP保留两位小数的几种方法
2019/07/24 PHP
Javascript 中的 call 和 apply使用介绍
2012/02/22 Javascript
利用javascript实现全部删或清空所选的操作
2014/05/27 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
jQuery图片轮播滚动切换代码分享
2020/04/20 Javascript
jQuery实现选项联动轮播效果【附实例】
2016/04/19 Javascript
Vue的Class与Style绑定的方法
2017/09/01 Javascript
JS实现的简单下拉框联动功能示例
2018/05/11 Javascript
浅谈React的最大亮点之虚拟DOM
2018/05/29 Javascript
vue.draggable实现表格拖拽排序效果
2018/12/01 Javascript
mpvue 单文件页面配置详解
2018/12/02 Javascript
js实现无缝轮播图插件封装
2020/07/31 Javascript
jQuery zTree如何改变指定节点文本样式
2020/10/16 jQuery
jQuery实现回到顶部效果
2020/10/19 jQuery
JS addEventListener()和attachEvent()方法实现注册事件
2021/01/11 Javascript
详解python实现读取邮件数据并下载附件的实例
2017/08/03 Python
用Python3创建httpServer的简单方法
2018/06/04 Python
python判断自身是否正在运行的方法
2019/08/08 Python
python 工具 字符串转numpy浮点数组的实现
2020/03/14 Python
Python实现汇率转换操作
2020/05/03 Python
利用python中的matplotlib打印混淆矩阵实例
2020/06/16 Python
HTML5的结构和语义(3):语义性的块级元素
2008/10/17 HTML / CSS
HTML5标签小集
2011/08/02 HTML / CSS
GEOX鞋美国官方网站:意大利会呼吸的鞋
2017/07/12 全球购物
Chain Reaction Cycles芬兰:世界上最大的在线自行车商店
2017/12/06 全球购物
C++是不是类型安全的
2014/02/18 面试题
户外婚礼策划方案
2014/02/08 职场文书
宾馆总经理岗位职责
2014/02/14 职场文书
演讲比赛主持词
2015/06/29 职场文书
创业计划书介绍
2019/04/24 职场文书