UDP多方聊天

使用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()
  • 缺点: 此程序只能在客户端输入消息后才能接收服务器端返回的消息
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 网络编程 网络编程对于很多的初学者来说,都是很向往的一种编程技能,但是很多的初学者却因为很长一段时间无法进入网络编...
    程序员欧阳阅读 6,172评论 1 37
  • 计算机网络概述 网络编程的实质就是两个(或多个)设备(例如计算机)之间的数据传输。 按照计算机网络的定义,通过一定...
    蛋炒饭_By阅读 5,037评论 0 10
  • 1、TCP为什么需要3次握手,4次断开? “三次握手”的目的是“为了防止已失效的连接请求报文段突然又传送到了服务端...
    杰伦哎呦哎呦阅读 8,870评论 0 6
  • 1.这篇文章不是本人原创的,只是个人为了对这部分知识做一个整理和系统的输出而编辑成的,在此郑重地向本文所引用文章的...
    SOMCENT阅读 14,490评论 6 174
  • 这两天开始练习人的五官,先是眼睛,分别为正面、侧面、斜面的三组眼睛结构和明暗! 希望大家多多关注,多多指教...
    冬日丶麋鹿阅读 3,823评论 4 5

友情链接更多精彩内容