synergy是一款可以跨平臺(tái)共享鼠標(biāo)和鍵盤(pán)的軟件。
具體的安裝方法網(wǎng)上很多,可以自行搜索,這里只提示一些可能出錯(cuò)的點(diǎn):
??? 1.client和server版本不一致可能導(dǎo)致無(wú)法連接。
??? 2.如果采用加密的方式,需要確保client和server采用相同的加密方式。
筆者最開(kāi)始就是疏忽了加密方式,導(dǎo)致client和server一直連接不上。
好奇心驅(qū)使,筆者又分析了一下synergy的協(xié)議數(shù)據(jù)包;
原來(lái)在傳輸層使用的是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詢(xún)問(wèn)client的屏幕信息,server根據(jù)屏幕信息進(jìn)行一些相應(yīng)的設(shè)置。
最后就是數(shù)據(jù)交互階段了,server不斷向client發(fā)送鼠標(biāo)坐標(biāo)(x,y),從而使client來(lái)定位鼠標(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)。