您当前的位置:首页 > 计算机 > 编程开发 > Python

Python使用UDP广播实现服务器自动发现

时间:09-07来源:作者:点击数:

机房管理软件或者教学软件一般都由服务器和客户端组成,当客户端启动之后会自动搜索服务器,这是如何实现的呢?下面通过一段代码来演示其中一种比较高效的方法。

客户端代码:

import socket

import time

def findServer():

    #创建socket对象

    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    #绑定socket

    sock.bind(('', 5000))

    while True:

        #接收信息

        data, addr = sock.recvfrom(1024)

        #服务器广播信息

        if data.decode() == 'ServerIP':

            #查看服务器IP

            print(addr[0])

        #休息一秒后

        time.sleep(1)

findServer()

服务端代码:

import socket

import time

def findServer():

    #检查是否已有服务器运行

    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    sock.bind(('', 5000))

    for i in range(3):

        data, addr = sock.recvfrom(1024)

        if data.decode() == 'ServerIP':

            sock.close()

            return True

        time.sleep(0.5)

    sock.close()

    return False

def sendServerIP():

    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)

    while True:

        #获取本机IP

        IP = socket.gethostbyname(socket.gethostname())

        #255表示广播地址

        IP = IP[:IP.rindex('.')]+'.255'

        #发送信息

        sock.sendto('ServerIP'.encode(), (IP, 5000))

        time.sleep(1)

 

already = findServer()

#如果已有服务器运行,则不再启动

if not already:

    sendServerIP()

方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门