栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

Python使用UDP协议与多线程实现简单聊天室

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python使用UDP协议与多线程实现简单聊天室

Python使用UDP协议与多线程实现简单聊天室

文章目录

Python使用UDP协议与多线程实现简单聊天室

前言成果源码

前言

下午看了B站讲socket的课,就想利用UDP协议实现聊天室的功能,然后自己看了一下多线程文章,就实现了简单聊天室的功能,其实还有许多优化的地方,比如加一些异常捕获的功能,本人小白一枚,就这样把

成果

为了方便测试,我们用pycharm与本机shell环境来模拟两台电脑发送消息,pycharm端监听是8801端口,本地shell监听8080端口
shell端发送

PYcharm接收到消息

Pycharm回复

shell端收到消息

源码

注意 udp_socket.bind(("", 8801)),这里的端口作为接收线程监听的端口,所以要写对端的端口

代码如下:

from socket import  *
import threading

## 发送方法,需要传3个形参
def send_msg(udp_socket,dest_addr,dest_port):
        send_data = input('请输入要发送的内容:')
        udp_socket.sendto(send_data.encode("utf-8"), (dest_addr,dest_port))

## 接收方法,需要传1个形参
def receive_msg(udp_socket):
    recv_data = udp_socket.recvfrom(1024)
    recv_msg = recv_data[0]
    send_addr = recv_data[1]
    print("信息来自:%s 内容是:%s" % (str(send_addr), recv_msg.decode("utf-8")))


def main():
       udp_socket = socket(AF_INET, SOCK_DGRAM)
       #
       udp_socket.bind(("", 8801)) ## 接收线程监听8801端口
       t_recv = threading.Thread(target=receive_msg, args=(udp_socket,))
       t_recv.setDaemon(True)  ##接收线程设置为守护线程
       t_recv.start()
       #这里做了一个判断
       while True:
           option = input("请输入功能:1.发送t2.退出n")
           if option == '1':
               dest_addr = input("请输入要发送的IP地址:")
               dest_port = int(input("请输入目标端口:"))
               send_msg(udp_socket, dest_addr, dest_port)
           elif option == '2':
               break
       udp_socket.close()


if __name__ == '__main__':
    main()
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/715010.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号