公司前段時間要我寫個小項目須要能夠局域網內一個ipad控制另外一臺pc上的鍵盤輸入,github上找了找,竟然有個robotgo庫這麼神級的存在,感受go的庫真是愈來愈多了,雖然大部分都是第三方的。https://github.com/go-vgo/robotgogit
原理很簡單,時間有限boss要一天就搞出來,全部沒有采用我不熟悉的局域網廣播技術,而是直接在在目標pc上用go啓了個服務器,ipad端按下某個按鍵以後發送協議到pc的服務器上,服務器監聽到協議後交給robotgo庫來模擬鍵盤按鍵便可。github
package main import ( "fmt" "log" "net/http" "github.com/go-vgo/robotgo" ) func main() { fmt.Println("=-=-=-==-=-=-=-=-=-\nController-PC start...\nPC端佔用端口號爲:9090\n=-=-=-==-=-=-=-=-=-") //192.168.30.12 http.HandleFunc("/", receiveClientRequest) err := http.ListenAndServe(":9090", nil) if err != nil { log.Fatal("ListenAndServe: ", err) } } func receiveClientRequest(w http.ResponseWriter, r *http.Request) { r.ParseForm() // fmt.Println("收到客戶端請求: ", r.Form) var key string = r.FormValue("key") fmt.Println("received key: ", key) robotgo.KeyTap(key) }
代碼量不多幾行,但在一個問題上卻耗費好幾個小時,那就是在頭幾回編譯robotgo庫時會失敗,提示幾處錯誤,具體不記得了,大概一個問題就是機器沒有gcc環境,須要安裝gcc, 另外一個是有了gcc以後還須要在gcc環境裏包含zlib和libpng的庫,由於robotgo不單單是作鍵盤鼠標模擬,還能作一些圖片處理之類的事,最終要應該是直接用了github上robotgo推薦的帶有zlib和libpng庫的gcc環境:服務器
https://github.com/go-vgo/Mingw (本身網盤裏有)orm
下載好以後貌似無需安裝直接放到C盤,配置一下環境變量: C:\Mingw\bin 加入 PATH. blog
gcc環境弄好以後就ok了。圖片