synergy是一款可以跨平臺(tái)共享鼠標(biāo)和鍵盤的軟件类浪。
具體的安裝方法網(wǎng)上很多惕耕,可以自行搜索,這里只提示一些可能出錯(cuò)的點(diǎn):
??? 1.client和server版本不一致可能導(dǎo)致無法連接。
??? 2.如果采用加密的方式肋坚,需要確保client和server采用相同的加密方式飞蹂。
筆者最開始就是疏忽了加密方式几苍,導(dǎo)致client和server一直連接不上。
好奇心驅(qū)使陈哑,筆者又分析了一下synergy的協(xié)議數(shù)據(jù)包妻坝;
原來在傳輸層使用的是tcp協(xié)議:
既然基于tcp,那首先進(jìn)行的肯定是tcp三次握手惊窖;
在非加密模式下惠勒,應(yīng)用層的數(shù)據(jù)是可以解析的,可以清楚地看到client和server之間的交互數(shù)據(jù):
這之后就是應(yīng)用層的信息協(xié)商了爬坑,client和server會(huì)交換雙方的版本號(hào)纠屋,并且server會(huì)發(fā)送Query Screen Info詢問client的屏幕信息,server根據(jù)屏幕信息進(jìn)行一些相應(yīng)的設(shè)置盾计。
最后就是數(shù)據(jù)交互階段了售担,server不斷向client發(fā)送鼠標(biāo)坐標(biāo)(x,y),從而使client來定位鼠標(biāo)的位置。
加密模式下署辉,應(yīng)用層數(shù)據(jù)都是unknown族铆,當(dāng)修改了加密模式之后,記住得徹底重啟synergy哭尝,windows中需要在服務(wù)管理中重啟synergy哥攘,這點(diǎn)挺疼的。
PS:為了保證延時(shí)在一定的范圍內(nèi)材鹦,每個(gè)數(shù)據(jù)都使用了tcp的PUSH選項(xiàng)逝淹。