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中random模块用法实例分析
May 19 Python
使用Python编写一个最基础的代码解释器的要点解析
Jul 12 Python
一个基于flask的web应用诞生 bootstrap框架美化(3)
Apr 11 Python
Python continue继续循环用法总结
Jun 10 Python
使用NumPy和pandas对CSV文件进行写操作的实例
Jun 14 Python
在python 中split()使用多符号分割的例子
Jul 15 Python
Django项目之Elasticsearch搜索引擎的实例
Aug 21 Python
如何基于python实现不邻接植花
May 01 Python
Pytorch转onnx、torchscript方式
May 25 Python
详解基于python的图像Gabor变换及特征提取
Oct 26 Python
python批量创建变量并赋值操作
Jun 03 Python
Python进程间的通信之语法学习
Apr 11 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+jquery+ajax实现即时聊天功能实例
2014/12/23 PHP
php版微信自动登录并获取昵称的方法
2016/09/23 PHP
Yii遍历行下每列数据的方法
2016/10/17 PHP
thinkphp分页集成实例
2017/07/24 PHP
PDO::prepare讲解
2019/01/29 PHP
使用Javascript和DOM Interfaces来处理HTML
2006/10/09 Javascript
js实现页面打印功能实例代码(附去页眉页脚功能代码)
2009/12/15 Javascript
JQuery Tab选项卡效果代码改进版
2010/04/01 Javascript
jquery不会自动回收xmlHttpRequest对象 导致了内存溢出
2012/06/18 Javascript
document.createElement()用法及注意事项(ff下不兼容)
2013/03/13 Javascript
不要使用jQuery触发原生事件的方法
2014/03/03 Javascript
JavaScript模板引擎用法实例
2015/07/10 Javascript
Bootstrap表单Form全面解析
2016/06/13 Javascript
JS实现点击事件统计的简单实例
2016/07/10 Javascript
微信小程序开发之录音机 音频播放 动画实例 (真机可用)
2016/12/08 Javascript
JS条形码(一维码)插件JsBarcode用法详解【编码类型、参数、属性】
2017/04/19 Javascript
vue-cli单页应用改成多页应用配置详解
2017/07/14 Javascript
详解Angular操作cookies方法
2018/06/01 Javascript
vue-router懒加载速度缓慢问题及解决方法
2018/11/25 Javascript
微信小程序实现富文本图片宽度自适应的方法
2019/01/20 Javascript
Object.keys() 和 Object.getOwnPropertyNames() 的区别详解
2020/05/21 Javascript
Element InputNumber计数器的使用方法
2020/07/27 Javascript
Vue router传递参数并解决刷新页面参数丢失问题
2020/12/02 Vue.js
用Python实现一个简单的能够发送带附件的邮件程序的教程
2015/04/08 Python
python操作mongodb根据_id查询数据的实现方法
2015/05/20 Python
Python提取特定时间段内数据的方法实例
2019/04/01 Python
用Python调用win命令行提高工作效率的实例
2019/08/14 Python
python 生成器和迭代器的原理解析
2019/10/12 Python
Python中的整除和取模实例
2020/06/03 Python
智能家居、吸尘器、滑板车、电动自行车网上购物:Geekmaxi
2021/01/18 全球购物
CAT鞋加拿大官网:CAT Footwear加拿大
2020/08/05 全球购物
三年级语文教学反思
2014/02/01 职场文书
遥感技术与仪器求职信
2014/02/22 职场文书
公司联欢会主持词
2015/07/04 职场文书
毕业班班主任工作总结2015
2015/07/23 职场文书
Pycharm 如何设置HTML文件自动补全代码或标签
2021/05/21 Python