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 相关文章推荐
Django中实现一个高性能计数器(Counter)实例
Jul 09 Python
Python中的os.path路径模块中的操作方法总结
Jul 07 Python
Python 读取图片文件为矩阵和保存矩阵为图片的方法
Apr 27 Python
pygame游戏之旅 调用按钮实现游戏开始功能
Nov 21 Python
Python3实现爬取简书首页文章标题和文章链接的方法【测试可用】
Dec 11 Python
Python 从列表中取值和取索引的方法
Dec 25 Python
解决pycharm回车之后不能换行或不能缩进的问题
Jan 16 Python
win8.1安装Python 2.7版环境图文详解
Jul 01 Python
python实现简单井字棋小游戏
Mar 05 Python
python如何实时获取tcpdump输出
Sep 16 Python
Python+OpenCV图像处理——实现直线检测
Oct 23 Python
Python3爬虫RedisDump的安装步骤
Feb 20 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编程之高级技巧——利用Mysql函数
2006/10/09 PHP
php 页面执行时间计算代码
2008/12/04 PHP
php实现网站插件机制的方法
2009/11/10 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
Laravel 5框架学习之数据库迁移(Migrations)
2015/04/08 PHP
浅谈ThinkPHP5.0版本和ThinkPHP3.2版本的区别
2017/06/17 PHP
使用git迁移Laravel项目至新开发环境的步骤详解
2020/04/06 PHP
用js怎么把&字符换成"&amp:"
2006/10/19 Javascript
统计jQuery中各字符串出现次数的工具
2012/05/03 Javascript
Knockout数组(observable)使用详解示例
2013/11/15 Javascript
JavaScript学习笔记之检测客户端类型是(引擎、浏览器、平台、操作系统、移动设备)
2015/12/03 Javascript
利用node.js实现自动生成前端项目组件的方法详解
2017/07/12 Javascript
JS中正则表达式要注意lastIndex属性
2017/08/08 Javascript
基于游标的分页接口实现代码示例
2018/11/12 Javascript
JavaScript显式数据类型转换详解
2019/03/18 Javascript
在vue中动态添加class类进行显示隐藏实例
2019/11/09 Javascript
js实现限定范围拖拽的示例
2020/10/26 Javascript
Python中字符串对齐方法介绍
2015/05/21 Python
python获得文件创建时间和修改时间的方法
2015/06/30 Python
举例详解Python中yield生成器的用法
2015/08/05 Python
python实现发送邮件功能代码
2017/12/14 Python
centos 安装python3.6环境并配置虚拟环境的详细教程
2018/02/22 Python
用Python编写一个简单的CS架构后门的方法
2018/11/20 Python
详解Django中CBV(Class Base Views)模型源码分析
2019/02/25 Python
命令行运行Python脚本时传入参数的三种方式详解
2019/10/11 Python
python实现视频读取和转化图片
2019/12/10 Python
python实现启动一个外部程序,并且不阻塞当前进程
2020/12/05 Python
基础的CSS3弹性盒Flexbox布局使用实例
2016/04/08 HTML / CSS
介绍一下Java的事务处理
2012/12/07 面试题
采购主管的岗位职责
2013/12/17 职场文书
国税会议欢迎词
2014/01/16 职场文书
销售内勤岗位职责
2014/04/15 职场文书
党的群众路线对照检查材料(个人)
2014/09/24 职场文书
2015年度培训工作总结范文
2015/04/02 职场文书
2015年派出所民警工作总结
2015/04/24 职场文书
考试没考好检讨书
2015/05/06 职场文书