synergy是一款可以跨平台共享鼠标和键盘的软件。
具体的安装方法网上很多,可以自行搜索,这里只提示一些可能出错的点:
1.client和server版本不一致可能导致无法连接。
2.如果采用加密的方式,需要确保client和server采用相同的加密方式。
笔者最开始就是疏忽了加密方式,导致client和server一直连接不上。
好奇心驱使,笔者又分析了一下synergy的协议数据包;
原来在传输层使用的是tcp协议:
既然基于tcp,那首先进行的肯定是tcp三次握手;
在非加密模式下,应用层的数据是可以解析的,可以清楚地看到client和server之间的交互数据:
这之后就是应用层的信息协商了,client和server会交换双方的版本号,并且server会发送Query Screen Info询问client的屏幕信息,server根据屏幕信息进行一些相应的设置。
最后就是数据交互阶段了,server不断向client发送鼠标坐标(x,y),从而使client来定位鼠标的位置。
加密模式下,应用层数据都是unknown,当修改了加密模式之后,记住得彻底重启synergy,windows中需要在服务管理中重启synergy,这点挺疼的。
PS:为了保证延时在一定的范围内,每个数据都使用了tcp的PUSH选项。