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的Django框架中实现Hacker News的一些功能
Apr 17 Python
Python3中的2to3转换工具使用示例
Jun 12 Python
全面了解python字符串和字典
Jul 07 Python
python3 selenium 切换窗口的几种方法小结
May 21 Python
python2 与 python3 实现共存的方法
Jul 12 Python
python 获取图片分辨率的方法
Jan 08 Python
Python+OpenCV采集本地摄像头的视频
Apr 25 Python
Django发送邮件和itsdangerous模块的配合使用解析
Aug 10 Python
pytorch 模型可视化的例子
Aug 17 Python
使用Pyhton集合set()实现成果查漏的例子
Nov 24 Python
jupyter notebook 的工作空间设置操作
Apr 20 Python
pdf论文中python画的图Type 3 fonts字体不兼容的解决方案
Apr 24 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打开文件fopen函数的使用说明
2013/07/05 PHP
php中$_POST与php://input的区别实例分析
2015/01/07 PHP
浅谈PHP5.6 与 PHP7.0 区别
2019/10/09 PHP
Laravel5.5 动态切换多语言的操作方式
2019/10/25 PHP
显示、隐藏密码
2006/07/01 Javascript
js checkbox(复选框) 使用集锦
2009/04/28 Javascript
Jquery 动态生成表格示例代码
2013/12/24 Javascript
jQuery中attr()方法用法实例
2015/01/05 Javascript
基于jQuery滑动杆实现购买日期选择效果
2015/09/15 Javascript
ES6记录异步函数的执行时间详解
2016/08/31 Javascript
JS常用函数和常用技巧小结
2016/10/15 Javascript
浅谈JavaScript的自动垃圾收集机制
2016/12/15 Javascript
使用nodeJs来安装less及编译less文件为css文件的方法
2017/11/20 NodeJs
vue+vuex+axios+echarts画一个动态更新的中国地图的方法
2017/12/19 Javascript
angularJs-$http实现百度搜索时的动态下拉框示例
2018/02/27 Javascript
javascript读取本地文件和目录方法详解
2020/08/06 Javascript
Python读取mp3中ID3信息的方法
2015/03/05 Python
python 多线程实现检测服务器在线情况
2015/11/25 Python
Python 自动刷博客浏览量实例代码
2017/06/14 Python
python处理按钮消息的实例详解
2017/07/11 Python
Python使用装饰器进行django开发实例代码
2018/02/06 Python
Python处理菜单消息操作示例【基于win32ui模块】
2018/05/09 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
详解python 中in 的 用法
2019/12/12 Python
Pygame的程序开始示例代码
2020/05/07 Python
为什么相对PHP黑python的更少
2020/06/21 Python
关于css中margin的值和垂直外边距重叠问题
2020/10/27 HTML / CSS
Wallis官网:英国女装零售商
2020/01/21 全球购物
JD Sports澳洲官网:英国领先的运动鞋和运动时尚零售商
2020/02/15 全球购物
Araks官网:纽约内衣品牌
2020/10/15 全球购物
中医药大学市场营销专业自荐信
2013/09/29 职场文书
初中数学教学反思
2014/01/16 职场文书
初中美术教学反思
2014/01/29 职场文书
房地产置业顾问岗位职责
2015/04/11 职场文书
两行代码解决Jupyter Notebook中文不能显示的问题
2021/04/24 Python
PYTHON基于Pyecharts绘制常见的直角坐标系图表
2022/04/28 Python