Python使用UDP广播实现服务器自动发现
机房管理软件或者教学软件一般都由服务器和客户端组成,当客户端启动之后会自动搜索服务器,这是如何实现的呢?下面通过一段代码来演示其中一种比较高效的方法。
客户端代码:
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()
温馨提示:单击文章顶部作者名字旁边浅蓝色的“Python小屋”进入公众号,关注后可以查看更多内容!
欢迎转发给您的朋友,或许这正是Ta需要的知识!
Python使用UDP广播实现服务器自动发现相关推荐
- android nsd和udp广播,Android网络服务发现(NSD)使用
Android网络服务发现(NSD)使用 NSD(NsdManager)是Android SDK中自带的类库,可以集成直接使用. 使用 NSD服务需要(android4.1及以上) minSdkVer ...
- Python实现UDP广播
服务器端和正常服务器端实现相同: import sockets = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)s.setsockopt(socke ...
- Python标准库socketserver实现UDP协议时间服务器
Python标准库socket提供了套接字编程所需要的绝大部分功能,更多案例详见文末相关阅读. 很久之前推送过一个使用标准库socket实现UDP协议时间服务器的代码,参考 Python使用UDP协议 ...
- Python版课堂管理系统中使用UDP广播远程关闭客户端程序思路与源码
本文代码来自于我自己使用开发的一套课堂管理系统,界面是用tkinter编写的,教师端界面如图所示: 为了防止学生关闭客户端而接收不到屏幕广播,大概3个月前为客户端代码增加了不允许关闭的辅助功能: de ...
- 实现ISA2004的WPAD(自动发现功能)
使ISA的功能和特性得到完全的体现,需要客户端安装FWC.其实原本我都是用sNAT模式,后来因为要做基于AD的身份验证访问,所以需要用到代理方式,为了客户端能够快速的配置,决定分发FWC,但是因为其默 ...
- Qt | UDP广播通信的使用、实战项目使用案例
Qt | UDP广播通信的使用.实战项目使用案例 1.UDP广播介绍 UDP广播地址固定IP地址为:XXX.XXX.XXX.255. 如果向全网段发送广播消息,那么广播地址为:255.255.255. ...
- Zabbix自动发现和自动注册
Zabbix自动发现和自动注册 文章目录 Zabbix自动发现和自动注册 前言 客户端配置指定服务器 自动发现 添加自动发现规则 创建自动发现动作 添加linux主机自动发现动作 添加Windows自 ...
- zabbix自动发现并监控GPU
配置zabbix监控模板(只需要在darshboard上操作一次) 创建监控模板 在配置->模板页面,选择创建模板: 如下填写: 模板名称:自定义,我们命名为gpu discovery 群组:放 ...
- python udp 直播_[Python] socket发送UDP广播实现聊天室功能
原博文 2018-11-24 12:33 − 一.说明 本文主要使用socket.socket发送UDP广播来实现聊天室功能. 重点难点:理解UDP通讯流程.多线程.UDP广播收发等. 测试环境:Wi ...
最新文章
- 防火墙产品原理与应用:防火墙接入方式
- CentOS Linux 7 配置 nginx 支持 CGI
- c++ const 类型检查
- java 搭建企业应用框架_java培训一般要学多久
- Mathematica修改默认字体
- feign和ajax,SpringCloud-feign 声明式服务调用
- [Linux] 权限与指令间的关系
- Web服务器处理连接请求的四种架构方式
- 【ElasticSearch】深入理解 ElasticSearch Doc Values
- (xy)+((x^y)1)求(245, 112)结果是多少
- Nginx 500错误总结
- LeetCode(13)——罗马数字转整数(JavaScript)
- L298N模块详细使用教程
- 一不做,二不休, 干脆把开局库更换的批处理文件也调试好放出来...
- 看完还不会数据库优化,你来找我!
- 腾讯互娱2021年游戏客户端开发工程师暑期实习生面试经历
- 在vue项目中使用supermap,基于 SuperMap iClient 8C(2017) for JavaScript,底图为天地图
- 通过you-get在哔哩哔哩下载视频报错处理
- OpenCV开发笔记(三十四):红胖子带你小白式编译Qt+openCV3.4.1+opencv_contrib(全网最简单最强,可读性最高,没有之一)
- Mysql IFNULL SUM 结合使用无效的问题
热门文章
- 服务器双网卡设置安全_服务器的基础知识
- python3 threading.lock_Python3 threading
- ubuntu cmake安装_如何在Emacs中得到一个真正的Terminal?vterm安装指南
- php 环境优化,Nginx与PHP-fpm环境在大流量下的优化配置
- springboot 分页查询参数_精通SpringBoot--分页查询功能的实现
- hpux系统启动中被某个服务hang住的解决办法
- Maven中引入本地jar包
- esayexcel下载问题
- 车站广播系统采用计算机,公共广播系统
- java concurrent int_Java高级特性系列--Concurrent