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 05 Python
Python利用前序和中序遍历结果重建二叉树的方法
Apr 27 Python
python按综合、销量排序抓取100页的淘宝商品列表信息
Feb 24 Python
python入门前的第一课 python怎样入门
Mar 06 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
Oct 21 Python
python实现五子棋人机对战游戏
Mar 25 Python
Python中的pathlib.Path为什么不继承str详解
Jun 23 Python
Python爬虫实现模拟点击动态页面
Mar 05 Python
Python如何用wx模块创建文本编辑器
Jun 07 Python
用Python爬取LOL所有的英雄信息以及英雄皮肤的示例代码
Jul 13 Python
Python爬取豆瓣数据实现过程解析
Oct 27 Python
详解python中的异常捕获
Dec 15 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中判断一个请求是ajax请求还是普通请求的方法
2011/06/28 PHP
php根据指定位置和长度获得子字符串的方法
2015/03/17 PHP
总结PHP如何获取当前主机、域名、网址、路径、端口和参数等
2016/09/09 PHP
PHP小白必须要知道的php基础知识(超实用)
2017/10/10 PHP
win7 wamp 64位 php环境开启curl服务遇到的问题及解决方法
2018/09/16 PHP
PHP addAttribute()函数讲解
2019/02/03 PHP
Javascript客户端脚本的设计和应用
2006/08/21 Javascript
jquery实现智能感知连接外网搜索
2013/05/21 Javascript
JS在可编辑的div中的光标位置插入内容的方法
2014/11/20 Javascript
js实现延迟加载的方法
2015/06/24 Javascript
JavaScript用select实现日期控件
2015/07/17 Javascript
javascript单页面手势滑屏切换原理详解
2016/03/21 Javascript
Vue.js教程之计算属性
2016/11/11 Javascript
js实现倒计时效果(小于10补零)
2017/03/08 Javascript
JavaScript 复制对象与Object.assign方法无法实现深复制
2018/11/02 Javascript
js 将线性数据转为树形的示例代码
2019/05/28 Javascript
vue2配置scss的方法步骤
2019/06/06 Javascript
JS中的一些常用的函数式编程术语
2019/06/15 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
Vue 根据条件判断van-tab的显示方式
2020/08/03 Javascript
[01:09]DOTA2次级职业联赛 - 99战队宣传片
2014/12/01 DOTA
[01:08:17]2018DOTA2亚洲邀请赛3月29日 小组赛B组 EG VS VGJ.T
2018/03/30 DOTA
谈谈Python进行验证码识别的一些想法
2016/01/25 Python
Python中extend和append的区别讲解
2019/01/24 Python
详解Python3注释知识点
2019/02/19 Python
python使用pandas处理大数据节省内存技巧(推荐)
2019/05/05 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
用CSS3和table标签实现一个圆形轨迹的动画的示例代码
2019/01/17 HTML / CSS
英国时尚女装购物网站:Missguided
2018/08/23 全球购物
会计专业毕业生自我鉴定
2013/10/29 职场文书
医学专业毕业生个人求职信
2013/12/25 职场文书
工作决心书范文
2014/03/11 职场文书
捐助贫困学生倡议书
2014/05/16 职场文书
建筑专业毕业生自荐信
2014/05/25 职场文书
党支部承诺书
2015/01/20 职场文书
自我推荐信怎么写
2015/03/24 职场文书