EC机器人8058和8059端口使用
1. 简介
在使用中二次开发中,出现不方便使用示教器查看机器人报警问题,以及运行日志,这时候就可以使用8058以及8059端口来获取.
端口区别
8058端口:日志类型为:Error,Warning,Info
8059端口:原始日志接口
2. 操作流程
下面是一篇关于如何操作和使用 8058 端口的文档。
8058 端口操作流程
概述
本章节介绍如何通过网络编程与 8058 端口进行通信。无论你使用的是哪种高级编程语言,基本步骤都是类似的。本文将以 Python 代码为例,并解释每一步的操作目的和实现方法。
操作步骤
1. 建立与服务器的连接
首先,我们需要创建一个 TCP 连接来连接到服务器的 8058 端口。以下是 Python 中的实现方法及其解释:
import socket
HOST = "172.16.11.31" # 服务器IP地址
PORT = 8058 # 服务器端口号
try:
# 创建一个TCP/IP套接字
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(2) # 设置超时时间为2秒
s.connect((HOST, PORT)) # 连接到服务器
print("已连接到服务器")
except socket.error as e:
print(f"Socket错误: {e}")
exit(1)
except Exception as e:
print(f"其他错误: {e}")
exit(1)
解释:
● 创建一个 TCP 套接字。
● 设置超时时间,避免连接过程长时间挂起。
● 尝试连接到指定的服务器和端口,如果连接失败,则捕获异常并输出错误信息。
2. 发送指令
一旦连接建立,就可以通过发送指令来获取服务器上的日志信息。在此例中,我们发送两条指令来获取日志信息:
try:
# 发送指令以获取日志信息
str1 = "Type=Info\n"
s.send(str1.encode()) # 发送获取类型为Info的日志指令
time.sleep(1) # 等待1秒
str2 = "all\n"
s.send(str2.encode()) # 发送获取全部日志信息的指令
解释:
● Type=Info\n:请求类型为 "Info" 的日志信息。(若请求输入 Error 类型,则获取 Error 信息;若请求输入 Warning类型,则获取 Error 和 Warning 类型的日志信息;若请求输入 Info,则获取所有类型的日志信息)
● all\n:请求获取所有日志信息(输入 all,输入全部日志;输入数字,如 10,输出最后 10 行日志;输入 exit,退出连接)。
● 使用 encode() 方法将字符串转换为字节数据后发送。
3. 接收和处理数据
服务器会返回相应的日志数据,我们需要接收这些数据并进行处理:(注意:数据格式UTF-8)
timeout_count = 0
max_timeout_count = 5 # 最大允许的超时次数
while True:
try:
data = s.recv(128000)
if not data:
print("服务器关闭连接")
break
print(data.decode('utf-8', 'ignore'))
timeout_count = 0 # 重置超时计数器
except socket.timeout:
timeout_count += 1
print(f"接收数据超时 ({timeout_count}/{max_timeout_count})")
if timeout_count >= max_timeout_count:
print("超时次数过多,关闭连接")
break
except socket.error as e:
print(f"Socket错误: {e}")
break
except Exception as e:
print(f"抛出异常: {e}")
break
解释:
● 使用 recv() 方法接收数据。此方法一次最多接收 128000 字节的数据。
● 如果接收到的数据为空,则说明服务器关闭了连接。
● 将接收到的字节数据解码为字符串并打印出来。
● 处理接收过程中可能出现的各种异常。
4. 关闭连接
操作完成后,关闭与服务器的连接:
finally:
s.close()
print("连接已关闭")
解释:
● 无论操作是否成功,最终都需要关闭套接字连接,以释放系统资源。
python全部代码
import socket
import time
HOST = "172.16.11.31"
PORT = 8058
try:
s=socket.socket(socket.AF_INET,socket.SOCK_STREAM)
s.settimeout(2)
s.connect((HOST, PORT))
print("已连接到服务器")
except socket.error as e:
print(f"Socket错误: {e}")
exit(1)
except Exception as e:
print(f"其他错误: {e}")
exit(1)
try:
str1 = "Type=Info\n"
s.send(str1.encode())
time.sleep(1)
str2 = "all\n"
s.send(str2.encode())
timeout_count = 0
max_timeout_count = 5 # 最大允许的超时次数
while True:
try:
data = s.recv(128000)
if not data:
print("服务器关闭连接")
break
print(data.decode('utf-8', 'ignore'))
timeout_count = 0 # 重置超时计数器
except socket.timeout:
timeout_count += 1
print(f"接收数据超时 ({timeout_count}/{max_timeout_count})")
if timeout_count >= max_timeout_count:
print("超时次数过多,关闭连接")
break
except socket.error as e:
print(f"Socket错误: {e}")
break
except Exception as e:
print(f"抛出异常: {e}")
break
finally:
s.close()
print("连接已关闭")
总结
通过本文档的步骤和示例代码,你可以使用任何高级编程语言与服务器的 8058 端口进行通信。关键步骤包括:
1. 建立 TCP 连接。
2. 发送指令请求。
3. 接收并处理服务器返回的数据。
4. 关闭连接。
如果在操作过程中遇到任何问题,请检查网络连接、服务器状态,以及确保你的编解码方式与服务器一致。
8059端口操作流程
概述
本章节详细说明了如何通过 8059 端口与服务器通信,获取原始日志。用户可以通过发送不同的命令来获取全部日志、指定行数的日志或退出连接。示例代码使用 Python 编写.
通信流程
1. 建立连接:通过 TCP 协议连接到指定服务器和端口。
2. 发送请求:发送请求字符串以获取日志。
3. 接收数据:接收服务器返回的日志数据并保存到文件。
4. 关闭连接:完成操作后关闭连接。
操作说明
● 获取全部日志:连接后,输入 all,服务器会返回全部日志。
● 获取指定行数日志:连接后,输入数字,如 10,服务器会返回最后 10 行日志。
● 退出连接:连接后,输入 exit,断开与服务器的连接。
Python 示例代码
import socket
HOST = "192.168.1.205"
PORT = 8059
try:
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(2)
s.connect((HOST, PORT))
print("已连接到服务器")
except socket.error as e:
print(f"Socket错误: {e}")
exit(1)
except Exception as e:
print(f"其他错误: {e}")
exit(1)
try:
# 新建文件或清空文件内容
with open(r'D:\205\log\err_log_1.md', 'w') as file:
file.close()
# 获取最近10条日志条目
str1 = "10\n"
s.send(str1.encode())
while True:
try:
data = s.recv(1024)
if not data:
print("服务器关闭连接")
break
with open(r'D:\205\log\err_log_1.md', 'a+') as f:
f.write(data.decode('utf-8'))
print(data.decode('utf-8'))
except socket.timeout:
print("接收数据超时")
break
except socket.error as e:
print(f"Socket错误: {e}")
break
except Exception as e:
print(f"抛出异常: {e}")
break
finally:
s.close()
print("连接已关闭")
注意事项
1. 网络连接稳定性:
a. 确保网络连接稳定,避免由于网络波动导致的连接中断或数据丢失。
2. 超时处理:
a. 设置合理的超时时间,防止程序长时间等待而挂起。
3. 错误处理:
a. 在连接、发送和接收数据时,做好异常处理,并记录错误日志。
4. 数据完整性:
a. 在发送和接收数据时,确保数据的完整性和正确性。必要时进行数据校验。
5. 资源管理:
a. 在程序结束或出现异常时,确保关闭所有打开的连接和文件,以释放系统资源。
6. 安全性:
a. 避免发送敏感信息,或使用加密方法保护数据传输的安全性。
7. 日志记录:
a. 在操作过程中记录关键日志,以便在出现问题时能够追踪和排查。