UDP多方聊天

本文介绍了如何利用UDP协议建立一个多客户端的聊天系统,通过服务器作为中继,将一个客户端发送的消息广播到所有连接的客户端。然而,该系统存在一个限制,即客户端必须先发送消息才能接收到服务器的回应。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用UDP协议多个客户端依靠服务器进行聊天

  • 思路 : 当服务器接收到某个客户端的信息后再转发给所有客户端

服务器代码:

import socket

def server():
    # 创建套接字,使用IPV4地址,使用UDP协议
    server = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

    # 绑定地址
    server.bind(('127.0.0.1',12345))

    #创建一个接收客户端地址的列表
    clientlist = []

    # 服务器不断循环
    while True:

        # 接收客户端消息,并获得客户端的套接字地址
        data,con = server.recvfrom(1024)
        text = '{0} say : {1}'.format(con,data.decode())

        # 将客户端的地址添加到列表中
        if con not in clientlist:
            clientlist.append(con)

        # 将接收到的消息发送到所有客户端
        for i in clientlist:

            server.sendto(text.encode(),i)


if __name__ == '__main__':
    server()

客户端代码

import socket

def client():
    # 建立客户端套接字
    client = socket.socket(socket.AF_INET,socket.SOCK_DGRAM)

    # 循环消息
    while True:
        str = input('please input word:')
        data = str.encode()

        # 发送输入消息给服务器
        client.sendto(data,('127.0.0.1',12345))

        # 接收服务器发送的消息
        data, con = client.recvfrom(1024)
        print(data.decode())



if __name__ == '__main__':
    client()
  • 缺点: 此程序只能在客户端输入消息后才能接收服务器端返回的消息
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值