一个synergy辅助工具:在synergy服务端远程地启动客户端

作为Java开发人员,你每天通过Synergy使Linux台式机和笔记本协作时,可能会面临一个困扰: 每天启动台式机上的synergy
c时,你都要去动下台式机的鼠标和键盘,在台式机中输入笔记本的IP,最后再启动syngergyc
c.

下面这个工具就是可以让你在笔记本上启动台式机的syngergyc
c,并连接笔记本上的synergy server; 这样一来,你就可以彻底不碰台式机了。

使用前提

1. 你的Linux台式机中已安装Syngergc,且syngergc命令在path中。

2. 你的Linux台式机基本不关机

工具安装办法

1. 在linux台式机中部署下面的java servlet应用

package kent.web.synergyutil;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

public class SynergycServlet extends HttpServlet {

    private static final long serialVersionUID = -2286225907488120316L;

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp)
            throws ServletException, IOException {

        PrintWriter out = resp.getWriter();
        String serverIp = getServerIp(req);

        out.println("<h1>Synergyc Controller</h1>");

        if (serverIp == null || serverIp.isEmpty()) {
            StringBuffer sb = new StringBuffer();
            sb.append("<b>Please input your synergy server's IP here: </b>\n");
            sb.append("<form action='' method='get'>                      \n");
            sb.append(" <input name='serverIp' value='" + getDefaultIp(req)
                    + "'/>                          \n");
            sb.append(" <input name='GO' type='submit'/>                  \n");
            sb.append("</form>                                            \n");
            out.println(sb);
            return;
        }

        out.println("<div>" + exec("killall synergyc") + "</div>");
        out.println("<div>" + exec("synergyc " + serverIp) + "</div>");
    }

    private String getDefaultIp(HttpServletRequest req) {
        return req.getRemoteAddr();

    }

    private String exec(String cmd) throws IOException {

        try {
            Process p = Runtime.getRuntime().exec(cmd);
            int exitValue = p.waitFor();
            String response = "Executing: " + cmd + ". Exit value is " + exitValue;
            return response;
        } catch (InterruptedException e) {
            throw new IllegalStateException(e);
        }

    }

    private String getServerIp(HttpServletRequest req) {
        String serverIp = req.getParameter("serverIp");
        if (serverIp != null) {
            serverIp = serverIp.trim();
        }
        return serverIp;
    }

}

<!--web.xml-->
<web-app>
    
  <servlet>
  	<servlet-name>synergycServlet</servlet-name>
  	<servlet-class>kent.web.synergyutil.SynergycServlet</servlet-class>
  </servlet>
  
  <servlet-mapping>
  	<servlet-name>synergycServlet</servlet-name>
  	<url-pattern>/sc</url-pattern>
  </servlet-mapping>   
  
  
</web-app>

2. 启动Servlet应用

3. 在笔记本的浏览器中输入:
http://台式机:8080/sc,将看到:

输入框里已有的IP就是你的服务端IP,一般不用改。提交后,

Leave a Comment

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.