synergy是一款可以跨平臺共享鼠標和鍵盤的軟件。
具體的安裝方法網上很多,可以自行搜索,這里只提示一些可能出錯的點:
??? 1.client和server版本不一致可能導致無法連接。
??? 2.如果采用加密的方式,需要確保client和server采用相同的加密方式。
筆者最開始就是疏忽了加密方式,導致client和server一直連接不上。
好奇心驅使,筆者又分析了一下synergy的協議數據包;
原來在傳輸層使用的是tcp協議:
synergy協議包總覽
既然基于tcp,那首先進行的肯定是tcp三次握手;
在非加密模式下,應用層的數據是可以解析的,可以清楚地看到client和server之間的交互數據:
這之后就是應用層的信息協商了,client和server會交換雙方的版本號,并且server會發送Query Screen Info詢問client的屏幕信息,server根據屏幕信息進行一些相應的設置。
最后就是數據交互階段了,server不斷向client發送鼠標坐標(x,y),從而使client來定位鼠標的位置。
加密模式下,應用層數據都是unknown,當修改了加密模式之后,記住得徹底重啟synergy,windows中需要在服務管理中重啟synergy,這點挺疼的。
PS:為了保證延時在一定的范圍內,每個數據都使用了tcp的PUSH選項。