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 相关文章推荐
下载给定网页上图片的方法
Feb 18 Python
Python和php通信乱码问题解决方法
Apr 15 Python
Python实现的批量下载RFC文档
Mar 10 Python
python制作小说爬虫实录
Aug 14 Python
python 限制函数调用次数的实例讲解
Apr 21 Python
Python3.6中Twisted模块安装的问题与解决
Apr 15 Python
Python多线程爬取豆瓣影评API接口
Oct 22 Python
python实现大量图片重命名
Mar 23 Python
python 将视频 通过视频帧转换成时间实例
Apr 23 Python
keras 获取某层的输入/输出 tensor 尺寸操作
Jun 10 Python
如何在Python中创建二叉树
Mar 30 Python
Python 中数组和数字相乘时的注意事项说明
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
Discuz Uchome ajaxpost小技巧
2011/01/04 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
2012/06/17 PHP
让CodeIgniter的ellipsize()支持中文截断的方法
2014/06/12 PHP
php中fsockopen用法实例
2015/01/05 PHP
php 获取xml接口数据的处理方法
2018/05/31 PHP
PHP实现微信公众号验证Token的示例代码
2019/12/16 PHP
Add a Table to a Word Document
2007/06/15 Javascript
在IE下获取object(ActiveX)的Param的代码
2009/09/15 Javascript
JavaScript 构造函数 面相对象学习必备知识
2010/06/09 Javascript
jQuery 常见操作实现方式和常用函数方法总结
2011/05/06 Javascript
jquery实现商品拖动选择效果代码(自写)
2013/05/28 Javascript
JSF中confirm弹出框的用法示例介绍
2014/01/07 Javascript
jQuery操作CheckBox的方法介绍(选中,取消,取值)
2014/02/04 Javascript
url中的特殊符号有什么含义(推荐)
2016/06/17 Javascript
jQuery+CSS3实现仿花瓣网固定顶部位置带悬浮效果的导航菜单
2016/09/21 Javascript
JavaScript中的await/async的作用和用法
2016/10/31 Javascript
vue-router路由简单案例介绍
2017/02/21 Javascript
详解javascript对数组和json数组的操作
2019/04/15 Javascript
JS创建自定义对象的六种方法总结
2020/12/15 Javascript
[48:47]VGJ.S vs NB 2018国际邀请赛小组赛BO2 第一场 8.18
2018/08/19 DOTA
python实现图片批量剪切示例
2014/03/25 Python
详解Python中的元组与逻辑运算符
2015/10/13 Python
简单解决Python文件中文编码问题
2015/11/22 Python
详解python中asyncio模块
2018/03/03 Python
Django后端接收嵌套Json数据及解析详解
2019/07/17 Python
Python实现扫码工具的示例代码
2020/10/09 Python
anaconda安装pytorch1.7.1和torchvision0.8.2的方法(亲测可用)
2021/02/01 Python
微信小程序canvas实现水平、垂直居中效果
2020/02/05 HTML / CSS
美国婴儿和儿童家具网上商店:ABaby.com
2018/07/02 全球购物
法国发饰品牌:Alexandre De Paris
2018/12/04 全球购物
在线课程:Skillshare
2019/04/02 全球购物
自我评价是什么
2014/01/04 职场文书
2015年上半年物业工作总结
2015/03/30 职场文书
2016教师学习党章心得体会
2016/01/15 职场文书
《分数的意义》教学反思
2016/02/20 职场文书
React 高阶组件HOC用法归纳
2021/06/13 Javascript