EC机器人8058和8059端口使用
1. 简介
在使用【zài shǐ yòng】🔗中二次开发中【kāi fā zhōng】,出现不方便使🌧用示教【yòng shì jiāo】器查看机器人报警问题,以及【yǐ jí】运🔁行日志,这时候【zhè shí hòu】就可以使用🔗8058以及【yǐ jí】⚡8059端口来【duān kǒu lái】😻获取♏.
端口区别
8058端口:日志类【rì zhì lèi】🔳型为:Error,Warning,Info
8059端口:原始日志接口
2. 操作流程
下面是【xià miàn shì】一篇关于如何🛬操作和使用【shǐ yòng】🎍 8058 端口的【duān kǒu de】文档🍋。
8058 端口操作流程
概述
本章节🥑介绍如【jiè shào rú】何通过网络编【wǎng luò biān】程与【chéng yǔ】💘 8058 端口进【duān kǒu jìn】行通信【háng tōng xìn】🍉。无论你使用的✔是哪种🤡高级编【gāo jí biān】程语言,基本步骤都是【zhòu dōu shì】类似的。本文将以⬇ Python 代码为🏗例,并解释🎯每一步的操作目的和实现方法【fǎ】。
操作步骤
1. 建立与服务器的连接
首先,我们需【wǒ men xū】📛要创建【yào chuàng jiàn】一个🎍 TCP 连接来【lián jiē lái】🅱连接到服务器😛的🛢 8058 端口。以下是 Python 中的【zhōng de】🛢实现方【shí xiàn fāng】法及其解释:
import socket
HOST = "172.16.11.31" # 服务器【fú wù qì】IP地址🌹
PORT = 8058 # 服务器【fú wù qì】🔵端口号
try:
# 创建一【chuàng jiàn yī】👒个TCP/IP套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(2) # 设置超时时间【shí shí jiān】💧为【wéi】2秒💣
s.connect((HOST, PORT)) # 连接到服务器【fú wù qì】🔠
print("已连接到服务器【qì】🚣")
except socket.error as e:
print(f"Socket错误【cuò wù】👮: e}")
exit(1)
解释:
● 创建一个 TCP 套接字【tào jiē zì】🙈。
● 设置超时时间🎴,避免连【bì miǎn lián】🍱接过程长时间【zhǎng shí jiān】挂起。
● 尝试连🔃接到指【jiē dào zhǐ】定的服务器和端口【duān kǒu】,如果连接失败🗯,则捕获🎨异常并【yì cháng bìng】输出错【shū chū cuò】误信息🌖。
2. 发送指令
一旦连✊接建立【jiē jiàn lì】💼,就可以通过发送指令来【zhǐ lìng lái】获取🔉服务器🚈上的日志信【rì zhì xìn】息【xī】。在此例【zài cǐ lì】🏩中,我们发送两条指令来【zhǐ lìng lái】获取🔉日志信【rì zhì xìn】息【xī】:
try:
# 发送指令【zhǐ lìng】以获取日志信【rì zhì xìn】⭕息
str1 = "Type=Info\n"
s.send(str1.encode()) # 发送获取类型【qǔ lèi xíng】为🚸Info的日志指令【zhǐ lìng】
time.sleep(1) # 等待【děng dài】🍦1秒【miǎo】
str2 = "all\n"
s.send(str2.encode()) # 发送获取全部🎞日志信【rì zhì xìn】⭕息的指【xī de zhǐ】令
解释:
● Type=Info\n:请求类型🏭为【wéi】 "Info" 的日志🍔信息【xìn xī】。(若请求【ruò qǐng qiú】🥗输入【shū rù】🕊 Error 类型🏭,则获取【zé huò qǔ】 Error 信息【xìn xī】;若请求【ruò qǐng qiú】🥗输入【shū rù】🕊 Warning类型🏭,则获取【zé huò qǔ】 Error 和 Warning 类型的【lèi xíng de】🚛日志信【rì zhì xìn】息;若请求【ruò qǐng qiú】🥗输入【shū rù】🕊 Info,则获取【zé huò qǔ】所有类🦆型的日🖍志信息【xìn xī】)
● all\n:请求获【qǐng qiú huò】取所有【qǔ suǒ yǒu】🙊日志信息【xī】(输入 all,输入全部日志🔎;输入数字🕌,如 10,输出最【shū chū zuì】后【hòu】🚤 10 行日志;输入 exit,退出连接🧓)。
● 使用🧐 encode() 方法将【fāng fǎ jiāng】字符串🍖转换为【zhuǎn huàn wéi】字节数据后发【jù hòu fā】送🛀。
3. 接收和处理数据
服务器会返回相应的【xiàng yīng de】🏑日志数【rì zhì shù】据,我们需要接收【yào jiē shōu】这些数据并进🐧行处理【háng chù lǐ】🥙:(注意:数据格式🥠UTF-8)
timeout_count = 0
max_timeout_count = 5 # 最大允许的超🛀时次数【shí cì shù】
while True:
try:
data = s.recv(128000)
if not data:
print("服务器【fú wù qì】🎏关闭连接")
break
print(data.decode('utf-8', 'ignore'))
timeout_count = 0 # 重置超时计数【shí jì shù】🏊器
except socket.timeout:
timeout_count += 1
print(f"接收数【jiē shōu shù】据超时🌬 (timeout_count}/{max_timeout_count})")
break
except Exception as e:
print(f"抛出异【pāo chū yì】🗑常: e}")
exit(1)
except Exception as e:
print(f"其他错✒误【wù】: e}")
break
except Exception as e:
print(f"抛出异【pāo chū yì】🎍常: e}")
注意事项
1. 网络连接稳定性:
a. 确保网络连接【luò lián jiē】稳定👉,避免由于网络【yú wǎng luò】🎈波动导【bō dòng dǎo】致的连接中断或数据丢失🙀。
2. 超时处理:
a. 设置合理的超时时间【shí shí jiān】🚢,防止程👺序长时间等待【jiān děng dài】🍣而挂起【ér guà qǐ】。
3. 错误处理:
a. 在连接💜、发送和接收数据时,做好异【zuò hǎo yì】🤟常处理,并记录【bìng jì lù】🍟错误日志【zhì】。
4. 数据完整性:
a. 在发送和接收数据时【shù jù shí】😍,确保数🗽据的完整性和👭正确性。必要时【bì yào shí】进行数据校验【jù xiào yàn】。
5. 资源管理:
a. 在程序【zài chéng xù】结束或【jié shù huò】出现异常时🔺,确保关闭所有打开的👧连接和🐘文件,以释放系统资【xì tǒng zī】源【yuán】👃。
6. 安全性:
a. 避免发【bì miǎn fā】😎送敏感信息【xìn xī】,或使用加密方【jiā mì fāng】法保护🧟数据传🦖输的安全性。
7. 日志记录:
a. 在操作♎过程中记录关键日志🎾,以便在【yǐ biàn zài】出现问题时能够追踪【gòu zhuī zōng】😆和排查【hé pái chá】。