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构造icmp echo请求和实现网络探测器功能代码分享
Jan 10 Python
Python使用reportlab将目录下所有的文本文件打印成pdf的方法
May 20 Python
教你用Python写安卓游戏外挂
Jan 11 Python
解决python3运行selenium下HTMLTestRunner报错的问题
Dec 27 Python
python实现简单加密解密机制
Mar 19 Python
计算机二级python学习教程(2) python语言基本语法元素
May 16 Python
django之自定义软删除Model的方法
Aug 14 Python
Python实现RGB与HSI颜色空间的互换方式
Nov 27 Python
PyTorch和Keras计算模型参数的例子
Jan 02 Python
OpenCV Python实现拼图小游戏
Mar 23 Python
Python 的 __str__ 和 __repr__ 方法对比
Sep 02 Python
变长双向rnn的正确使用姿势教学
May 31 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 park、unpark、ord 函数使用方法(二进制流接口应用实例)
2010/10/19 PHP
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
php环境套包 dedeampz 伪静态设置示例
2014/03/26 PHP
Thinkphp中volist标签mod控制一定记录的换行BUG解决方法
2014/11/04 PHP
PHP实现合并discuz用户
2015/08/05 PHP
PHP实现的AES加密、解密封装类与用法示例
2018/08/02 PHP
js里的prototype使用示例
2010/11/19 Javascript
Javascript将string类型转换int类型
2010/12/09 Javascript
JQuery获取文本框中字符长度的代码
2011/09/29 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
10个JavaScript中易犯小错误
2016/02/14 Javascript
JavaScript获取短信验证码(周期性)
2016/12/29 Javascript
微信小程序 页面跳转传递值几种方法详解
2017/01/12 Javascript
js canvas实现放大镜查看图片功能
2017/06/08 Javascript
解决bootstrap下拉菜单点击立即隐藏bug的方法
2017/06/13 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
使用JS判断移动端手机横竖屏状态
2018/07/30 Javascript
jQuery简单实现根据日期计算星期几的方法
2019/01/09 jQuery
JavaScript中常用的简洁高级技巧总结
2019/03/10 Javascript
Vue3.0 响应式系统源码逐行分析讲解
2019/10/14 Javascript
vue实现移动端项目多行文本溢出省略
2020/07/29 Javascript
Python中input和raw_input的一点区别
2014/10/21 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
Django中cookie的基本使用方法示例
2018/02/03 Python
Python 获取div标签中的文字实例
2018/12/20 Python
Python搭建Spark分布式集群环境
2019/07/05 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
Python自动化测试中yaml文件读取操作
2020/08/20 Python
美国瑜伽服装和装备购物网站:Mukha Yoga
2019/02/22 全球购物
小班上学期评语
2014/05/05 职场文书
政风行风评议整改方案
2014/09/15 职场文书
2014年村计划生育工作总结
2014/11/14 职场文书
2015年污水处理厂工作总结
2015/05/26 职场文书
MSSQL基本语法操作
2022/04/11 SQL Server
Smart 2 车辆代号 HC11 全新谍照曝光
2022/04/21 数码科技