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 相关文章推荐
Linux下Python获取IP地址的代码
Nov 30 Python
python套接字流重定向实例汇总
Mar 03 Python
Python中使用asyncio 封装文件读写
Sep 11 Python
Python3生成手写体数字方法
Jan 30 Python
python web基础之加载静态文件实例
Mar 20 Python
python实现list由于numpy array的转换
Apr 04 Python
使用pandas模块读取csv文件和excel表格,并用matplotlib画图的方法
Jun 22 Python
Python实现查询某个目录下修改时间最新的文件示例
Aug 29 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
Dec 02 Python
教你如何编写、保存与运行Python程序的方法
Jul 12 Python
Python求两个字符串最长公共子序列代码实例
Mar 05 Python
mac系统下安装pycharm、永久激活、中文汉化详细教程
Nov 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实现的在线人员函数库
2008/04/09 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
php简单实现多字节字符串翻转的方法
2015/03/31 PHP
php resizeimage 部分jpg文件 生成缩略图失败的原因分析及解决办法
2016/03/23 PHP
Yii中的relations数据关联查询及统计功能用法详解
2016/07/14 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
2016/07/28 PHP
PHP检测接口Traversable用法详解
2017/12/29 PHP
jquery tools 系列 scrollable(2)
2009/09/06 Javascript
utf-8编码引起js输出中文乱码的解决办法
2010/06/23 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
开源的javascript项目Kissy介绍
2014/11/28 Javascript
JAVA四种基本排序方法实例总结
2015/07/24 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
利用AJAX实现WordPress中的文章列表及评论的分页功能
2016/05/17 Javascript
实现JavaScript的组成----BOM和DOM详解
2016/05/18 Javascript
微信小程序页面间通信的5种方式
2017/03/31 Javascript
AngularJS 的$timeout服务示例代码
2017/09/21 Javascript
jQuery与vue实现拖动验证码功能
2018/01/30 jQuery
Vue 修改网站图标的方法
2020/12/31 Vue.js
python生成器的使用方法
2013/11/21 Python
详解在Python和IPython中使用Docker
2015/04/28 Python
Python中死锁的形成示例及死锁情况的防止
2016/06/14 Python
numpy中实现二维数组按照某列、某行排序的方法
2018/04/04 Python
运行django项目指定IP和端口的方法
2018/05/14 Python
详解Python 正则表达式模块
2018/11/05 Python
python代码 输入数字使其反向输出的方法
2018/12/22 Python
python opencv判断图像是否为空的实例
2019/01/26 Python
Python实现图片批量加入水印代码实例
2019/11/30 Python
mui几种页面跳转方式对比总结概括
2017/08/18 HTML / CSS
求高于平均分的学生学号及成绩
2016/09/01 面试题
关于递归的一道.NET面试题
2013/05/12 面试题
会议接待欢迎词
2014/01/12 职场文书
文化建设工作方案
2014/05/12 职场文书
中学生教师节演讲稿
2014/09/03 职场文书
Nginx Rewrite使用场景及配置方法解析
2021/04/01 Servers
DSP接收机前端设想
2022/04/05 无线电