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. 在操作過程中記錄關鍵日志,以便在出現問題時能夠追蹤和排查。