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通过解析网页实现看报程序的方法
Aug 04 Python
Python正则表达式匹配中文用法示例
Jan 17 Python
django基础之数据库操作方法(详解)
May 24 Python
Python将多个excel文件合并为一个文件
Jan 03 Python
python实现远程通过网络邮件控制计算机重启或关机
Feb 22 Python
python得到一个excel的全部sheet标签值方法
Dec 10 Python
Python 3.8 新功能全解
Jul 25 Python
Python中模块(Module)和包(Package)的区别详解
Aug 07 Python
详解python中docx库的安装过程
Nov 08 Python
基于Python第三方插件实现西游记章节标注汉语拼音的方法
May 22 Python
Django解决frame拒绝问题的方法
Dec 18 Python
pandas进行数据输入和输出的方法详解
Mar 23 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
用C/C++扩展你的PHP 为你的php增加功能
2012/09/06 PHP
ThinkPHP自定义函数解决模板标签加减运算的方法
2015/07/03 PHP
用HTML/JS/PHP方式实现页面延时跳转的简单实例
2016/07/18 PHP
php版微信公众平台接口参数调试实现判断用户行为的方法
2016/09/23 PHP
php实现微信分享朋友链接功能
2019/02/18 PHP
浏览器无法运行JAVA脚本的解决方法
2008/01/09 Javascript
jMessageBox 基于jQuery的窗口插件
2009/12/09 Javascript
javascript中call和apply的用法示例分析
2015/04/02 Javascript
JavaScript编写连连看小游戏
2015/07/07 Javascript
jquery实现点击其他区域时隐藏下拉div和遮罩层的方法
2015/12/23 Javascript
jQuery实现指定区域外单击关闭指定层的方法【经典】
2016/06/22 Javascript
Javascript 实现简单计算器实例代码
2016/10/23 Javascript
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
Bootstrap Table 在指定列中添加下拉框控件并获取所选值
2017/07/31 Javascript
通过vue-router懒加载解决首次加载时资源过多导致的速度缓慢问题
2018/04/08 Javascript
JS实现Cookie读、写、删除操作工具类示例
2018/08/28 Javascript
vue项目中全局引入1个.scss文件的问题解决
2019/08/01 Javascript
基于redis的小程序登录实现方法流程分析
2020/05/25 Javascript
详解JavaScript匿名函数和闭包
2020/07/10 Javascript
Python将多份excel表格整理成一份表格
2018/01/03 Python
python向图片里添加文字
2019/11/26 Python
pytorch的梯度计算以及backward方法详解
2020/01/10 Python
Python3.9又更新了:dict内置新功能
2020/02/28 Python
Python批量修改xml的坐标值全部转为整数的实例代码
2020/11/26 Python
Parts Express:音频、视频和扬声器的第一来源
2017/04/25 全球购物
J2SDK1.5与J2SDK5.0有什么区别
2012/09/19 面试题
材料加工硕士生求职信
2013/10/10 职场文书
高中军训感言1000字
2014/03/01 职场文书
企业党员公开承诺书
2014/03/26 职场文书
升学宴主持词
2014/04/02 职场文书
党员创先争优活动总结
2014/05/04 职场文书
财务工作疏忽检讨书
2014/09/11 职场文书
中学生2014国庆节演讲稿:不屈的民族
2014/09/21 职场文书
入党申请书怎么写?
2019/06/11 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
用position:sticky完美解决小程序吸顶问题的实现方法
2021/04/24 HTML / CSS