开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 260|回复: 2
收起左侧

[已解决] 求助 python转易语言的写法

 关闭 [复制链接]
结帖率:89% (33/37)
发表于 2025-7-9 00:34:49 | 显示全部楼层 |阅读模式   江苏省苏州市
150精币
import socket

def discover_devices():
    print("发现门禁设备")
    devices = {}
   
    print("创建设备套接字")
    sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sock.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    sock.settimeout(5)
    sock.bind(('0.0.0.0', 7000))
   
    print("发送广播请求")
    sender = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
    sender.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1)
    sender.sendto(b"discover acs all", ('255.255.255.255', 6000))
    sender.close()
   
    print("接收设备回应")
    while True:
        try:
            data, addr = sock.recvfrom(1024)
            if b'alive' in data:
                ip = addr[0]
                ident = data.split(b'alive ')[1].decode().strip()
                if ip not in devices:
                    devices[ip] = ident
        except socket.timeout:
            break
   
    sock.close()
    return devices

# 执行设备发现并显示结果
devices = discover_devices()
print("设备发现结果:")
for ip, ident in devices.items():
    print(f"IP地址: {ip}, 设备标识: {ident}")



这段py代码转易语言怎么写呢

回答提醒:如果本帖被关闭无法回复,您有更好的答案帮助楼主解决,请发表至 源码区 可获得加分喔。
友情提醒:本版被采纳的主题可在 申请荣誉值 页面申请荣誉值,获得 1点 荣誉值,荣誉值可兑换荣誉会员、终身vip用户组。
快捷通道:申请荣誉值无答案申请取消悬赏投诉有答案未采纳为最佳

结帖率:99% (129/130)

签到天数: 22 天

发表于 2025-7-9 00:34:50 | 显示全部楼层   贵州省贵阳市
发现门禁设备.e (9.39 KB, 下载次数: 7)

评分

参与人数 1荣誉 +1 收起 理由
笨潴 + 1 热心帮助他人,荣誉+1,希望继续努力(*^__^*) 嘻嘻!

查看全部评分

回复

使用道具 举报

签到天数: 21 天

发表于 2025-7-9 02:48:43 | 显示全部楼层   广西壮族自治区柳州市
  
窗口程序集名保 留  保 留备 注
程序集1   
子程序名返回值类型公开备 注
discover_devicesdevices 
变量名类 型静态数组备 注
sock整数型 
sender整数型 
readfdsfd_set 
addr文本型 
data文本型 
devicesdevices 
alive文本型0
标准输出 (, “发现门禁设备”, #换行符 )
' devices = {  }
标准输出 (, “创建设备套接字”, #换行符 )
sock = socket_socket ( #AF_INET, #SOCK_DGRAM )
setsockopt (sock, #SOL_SOCKET, #SO_BROADCAST, 字符 (1), 4)
sock_settimeout (5)
sock_bind (sock, “0.0.0.0”, 7000)
标准输出 (, “发送广播请求”, #换行符 )
sender = socket_socket ( #AF_INET, #SOCK_DGRAM )
setsockopt (sender, #SOL_SOCKET, #SO_BROADCAST, 字符 (1), 4)
sender_sendto (sender, “discover acs all”, “255.255.255.255”, 6000)
closesocket (sender)
标准输出 (, “接收设备回应”, #换行符 )
判断循环首 ()
如果真 (sock_settimeout (5, sock, readfds) = 0)
跳出循环 ()
addr = sock_recvfrom (sock, 1024, data)
如果真 (寻找文本 (data, “alive”, , ) ≠ -1)
加入成员 (devices.ip, addr)
alive = 分割文本 (data, “alive”, )
加入成员 (devices.ident, alive [2])

判断循环尾 ()
closesocket (sock)
WSACleanup ()
返回 (devices)
子程序名返回值类型公开备 注
_启动子程序整数型 本子程序在程序启动后最先执行
变量名类 型静态数组备 注
devicesdevices 
i1整数型 
' 执行设备发现并显示结果
devices = discover_devices ()
标准输出 (, “设备发现结果:”, #换行符 )
变量循环首 (1, 取数组成员数 (devices.ident), 1, i1)
标准输出 (, “IP地址: ”, devices.ip [i1], “, 设备标识: ”, devices.ident [i1], #换行符 )
变量循环尾 ()
返回 (0)  ' 可以根据您的需要返回任意数值
子程序名返回值类型公开备 注
socket_socket整数型 
参数名类 型参考可空数组备 注
参数1整数型
参数2整数型
WSAStartup (合并短整数 (2, 2), 申请内存 (4096, ))
返回 (socket (参数1, 参数2, #IPPROTO_UDP ))
子程序名返回值类型公开备 注
sock_bind  
参数名类 型参考可空数组备 注
参数1整数型
参数2文本型
RECEIVER_PORT短整数型
变量名类 型静态数组备 注
asockaddr_in 
a.sin_family = #AF_INET
a.sin_addr = htonl (参数2)
a.sin_port = htons (RECEIVER_PORT)
bind (参数1, a, 16)
子程序名返回值类型公开备 注
sock_settimeout整数型 
参数名类 型参考可空数组备 注
参数 
sock
readfdsfd_set
变量名类 型静态数组备 注
timeouttimeval 
i1整数型 
a整数型 
b整数型 
' readfds.fd_count = 0
. ' 计次循环首 (取数组成员数 (readfds.fd_array), i1)
' readfds.fd_array [i1] = 0
. ' 计次循环尾 ()
' ' FD_SET (sock, readfds)
' timeout.tv_sec = 参数
' timeout.tv_usec = 0
' 返回 (select (0, readfds, 0, 0, timeout))
判断 (是否为空 (sock))
a = 参数 × 1000 + 取启动时间 ()
b = a - 取启动时间 ()
如果真 (b < 0)
b = 0
返回 (b)
返回 (a)
子程序名返回值类型公开备 注
sender_sendto  
参数名类 型参考可空数组备 注
参数1整数型
参数2文本型
参数3文本型
参数4短整数型
变量名类 型静态数组备 注
tosockaddr_in 
to.sin_family = #AF_INET
to.sin_addr = inet_addr (参数3)
to.sin_port = htons (参数4)
sendto (参数1, 到字节集 (参数2), 取文本长度 (参数2), 0, to, 16)
子程序名返回值类型公开备 注
sock_recvfrom文本型 
参数名类 型参考可空数组备 注
参数 
参数2整数型
data文本型
变量名类 型静态数组备 注
sender_addrsockaddr_in 
data = 取空白文本 (参数2)
recvfrom (参数, data, 参数2, 0, sender_addr, 16)
返回 (inet_ntoa (sender_addr.sin_addr))
数据类型名公开备 注
sockaddr_in 
成员名类 型传址数组备 注
sin_family短整数型  
sin_port短整数型  
sin_addr整数型  
sin_zero字节型 8
数据类型名公开备 注
fd_set 
成员名类 型传址数组备 注
fd_count整数型 how many are SET?
fd_array整数型 64an array of SOCKETs
数据类型名公开备 注
timeval 
成员名类 型传址数组备 注
tv_sec   
tv_usec   
数据类型名公开备 注
devices 
成员名类 型传址数组备 注
ip文本型 1
ident文本型 1

DLL命令名返回值类型公开备 注
socket整数型 Socket又称套接字,应用程序通常通过套接字向网络发出请求或者应答网络请求。
DLL库文件名:
ws2_32.dll
在DLL库中对应命令名:
socket
参数名类 型传址数组备 注
af整数型
type整数型SOCK_STREAM or SOCK_DGRAM
protocol整数型
DLL命令名返回值类型公开备 注
setsockopt整数型 
DLL库文件名:
ws2_32
在DLL库中对应命令名:
setsockopt
参数名类 型传址数组备 注
s整数型0
level整数型0
optname整数型0
a1文本型0
optlen整数型0
DLL命令名返回值类型公开备 注
WSAStartup整数型 
DLL库文件名:
ws2_32.dll
在DLL库中对应命令名:
WSAStartup
参数名类 型传址数组备 注
wVersionRequested整数型
lpWSAData整数型
DLL命令名返回值类型公开备 注
bind整数型 
DLL库文件名:
ws2_32.dll
在DLL库中对应命令名:
bind
参数名类 型传址数组备 注
s整数型0
asockaddr_in0
namelen整数型0
DLL命令名返回值类型公开备 注
htonl整数型 将long从主机转换为网络字节序(big-endian)
DLL库文件名:
ws2_32.dll
在DLL库中对应命令名:
htonl
参数名类 型传址数组备 注
hostlong文本型
DLL命令名返回值类型公开备 注
htons短整数型 将short从主机转换为网络字节序(big-endian)
DLL库文件名:
ws2_32.dll
在DLL库中对应命令名:
htons
参数名类 型传址数组备 注
hostshort短整数型
DLL命令名返回值类型公开备 注
select整数型 
DLL库文件名:
ws2_32
在DLL库中对应命令名:
select
参数名类 型传址数组备 注
nfds整数型0
readfdsfd_set0
writefds整数型0
exceptfds整数型0
a1timeval0
DLL命令名返回值类型公开备 注
sendto整数型 
DLL库文件名:
ws2_32.dll
在DLL库中对应命令名:
sendto
参数名类 型传址数组备 注
s整数型
buf字节集
len整数型
flags整数型
tosockaddr_in
tolen整数型
DLL命令名返回值类型公开备 注
inet_addr整数型 转换IPv4点分十进制格式到IN_ADDR结构
DLL库文件名:
ws2_32.dll
在DLL库中对应命令名:
inet_addr
参数名类 型传址数组备 注
cp文本型
DLL命令名返回值类型公开备 注
closesocket整数型 
DLL库文件名:
ws2_32.dll
在DLL库中对应命令名:
closesocket
参数名类 型传址数组备 注
s整数型0
DLL命令名返回值类型公开备 注
recvfrom整数型 
DLL库文件名:
ws2_32
在DLL库中对应命令名:
recvfrom
参数名类 型传址数组备 注
s整数型
buf文本型
len整数型
flags整数型
fromsockaddr_in
fromlen整数型
DLL命令名返回值类型公开备 注
WSACleanup整数型 
DLL库文件名:
ws2_32
在DLL库中对应命令名:
WSACleanup
参数名类 型传址数组备 注
DLL命令名返回值类型公开备 注
inet_ntoa文本型 转换IPv4网络地址到点分十进制格式的ASCII字符串
DLL库文件名:
ws2_32.dll
在DLL库中对应命令名:
inet_ntoa
参数名类 型传址数组备 注
in整数型



i支持库列表   支持库注释   
spec特殊功能支持库


发现门禁-随意写的不知道对不对.e (10.99 KB, 下载次数: 0)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报QQ: 793400750,邮箱:wp@125.la
网站简介:精易论坛成立于2009年,是一个程序设计学习交流技术论坛,隶属于揭阳市揭东区精易科技有限公司所有。
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表