client send: {status:"GetID", mac:<MAC address>}
client rece: {status:<"GetIDSuccess"/"GetIDFail">[, id:<ID number>, pwd:<password> reason:<Why Fail?>]}
client send: {status:"Login", mac:<MAC address>, id:<ID number>, pwd:<old password>}
client rece: {status:<"LoginSuccess"/"LoginFail">[, pwd:<new password>, reason:<Why Fail?>]}
client send: {status:"Register", mac:<MAC address>, id:<ID number>, pwd:<password>, permenant:<True/False>}
client rece: {status:<"RegisterSuccess"/"RegisterFail">[, reason:<Why Fail?>]}
client send: {status:"AskConn", to:<{ID1, ID2, ...}>, pwd:<{"pwd1", "pwd2", ...}>} # 密碼若是空字串則代表使用詢問模式,否則使用直接連接模式
client rece: {status:<"AskConnSuccess"/"AskConnFail">, from:<ID number>[, reason:<Why Fail?>, UDPip:<IP address or alias name>, UDPport:<port number>, TCPip:<格式一樣>, TCPport:<格式一樣>]} # 傳回影音傳輸伺服器、鍵鼠控制伺服器位置
client rece: {status:"NeedConn", from:<ID number>, directly:<True/False>, UDPip:<IP address or alias name>, UDPport:<port number>, TCPip:<格式一樣>, TCPport:<格式一樣>} # directly: True 直接連接模式, False 詢問模式
client send: {status:<"NeedConnAccept"/"NeedConnRefuse">, to:<ID number>[, reason:<Why Refuse?>]} # 有可能被加入黑名單,或在詢問模式被拒絕了之類的
client send: {type:"Login", from:<ID number>, pwd:<password>}
client rece: {type:<"LoginSuccess"/"LoginFail">[, reason:<Why Fail?>]}
client send: <ID number>;Login;<password>
client rece: <ID number>;<LoginSuccess/LoginFail>[;<Why Fail?>]
==============================================================================
client send: {type:"ScreenEvent", to:<ID number>, event:<event type>[, <data key>:<data value>]}
client rece: {type:"ScreenEvent", from:<ID number>, event:<event type>[, <data key>:<data value>]}
client send: {type:"AskUpdate", to:<ID number>, key:<Anything>, value:<Anything>}
client rece: {type:"NeedUpdate", from:<ID number>, key:<Anything>, value:<Anything>}
client send: {type:"AskInform", to:<ID number>, key:<Anything>, value:<Anything>}
client rece: {type:"NeedInform", from:<ID number>, key:<Anything>, value:<Anything>}
===============================================================================
client send: <ID number>;screen;<screen data>
client rece: <ID number>;screen;<screen data>
client send: <ID number>;audio;<audio data>
client rece: <ID number>;audio;<audio data>
===============================================================================
client send: {status:"AskMonitor", to:<ID number>, question:<Anything>}
client rece: {status:<"AskMonitorSuccess/AskMonitorFail">, from:<ID number>, question:<Anything>[, answer:<Anything>, reason:<Why Fail?>]}
client rece: {status:"NeedMonitor", from:<ID number>, question:<Anything>}
client send: {status:<"NeedMonitorAccept/NeedMonitorRefuse">, to:<ID number>, question:<Anything>[, answer:<Anything>, reason:<Why Refuse?>]}
===============================================================================
client send: {status:"AbortNeedConn", to:<ID number>}
client rece: {status:"AbortNeedConn", from:<ID number>}
client send: {status:"AbortAskConn", to:<ID number>}
client rece: {status:"AbortAskConn", from:<ID number>}
===============================================================================
client send: {status:"ChangePassword", password:<Password>}
client rece: {status:<"ChangePasswordSuccess"/"ChangePasswordFail">[, reason:<Why Fail?>]}
# 內建函式可以處理
===============================================================================
client send: {status:"SetInfo", key:"pwd_permenant", permenant:<True/False>}
client rece: {status:<"SetInfoSuccess"/"SetInfoFail">[, key:"pwd_permenant", reason:<Why Fail?>]}