python实现udp聊天窗口

 更新时间:2020年03月31日 16:45:58   作者:sola_酱  
这篇文章主要为大家详细介绍了python实现udp聊天窗口,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下

要与对方实现通讯,有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字符串替换re.sub()方法解析

    python字符串替换re.sub()方法解析

    这篇文章主要介绍了python字符串替换re.sub()方法解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-09-09
  • 利用Python计算KS的实例详解

    利用Python计算KS的实例详解

    这篇文章主要介绍了利用Python计算KS的实例详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • PyQt5+Pycharm安装和配置图文教程详解

    PyQt5+Pycharm安装和配置图文教程详解

    这篇文章主要介绍了PyQt5+Pycharm安装和配置教程,本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-03-03
  • django rest framework serializer返回时间自动格式化方法

    django rest framework serializer返回时间自动格式化方法

    这篇文章主要介绍了django rest framework serializer返回时间自动格式化方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-03-03
  • python中的break、continue、exit()、pass全面解析

    python中的break、continue、exit()、pass全面解析

    下面小编就为大家带来一篇python中的break、continue、exit()、pass全面解析。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • python实现批量移动文件

    python实现批量移动文件

    这篇文章主要为大家详细介绍了python实现批量移动文件,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • python 读取yaml文件的两种方法(在unittest中使用)

    python 读取yaml文件的两种方法(在unittest中使用)

    这篇文章主要介绍了python 读取yaml文件的两种方法(在unittest中使用),帮助大家更好的理解和学习python,感兴趣的朋友可以了解下
    2020-12-12
  • Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单

    Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单

    这篇文章主要介绍了Scrapy+Selenium自动获取cookie爬取网易云音乐个人喜爱歌单,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-02-02
  • Python多继承顺序实例分析

    Python多继承顺序实例分析

    这篇文章主要介绍了Python多继承顺序,结合实例形式分析了Python多继承情况下继承顺序对同名函数覆盖的影响,需要的朋友可以参考下
    2018-05-05
  • python 变量初始化空列表的例子

    python 变量初始化空列表的例子

    今天小编就为大家分享一篇python 变量初始化空列表的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11

最新评论