基于socket实现虚拟手柄使用手机控制电脑游戏(下)-手机端虚拟手柄

这个是关于利用socket套接字实现手机控制电脑按键的一个实例,完成这个项目可以实现用手机控制狂野飙车等游戏,就是一个简易的手机虚拟手柄,该项目一共分为两个部分,一个是电脑的服务端,用来接收虚拟手柄发送来的消息并进行相应的按键处理;另一部分是手机虚拟手柄端,用来发送消息,这个是基于unity做的。
所有的代码已开源,GitHub链接:虚拟手柄GitHub地址

客户端界面展示:

客户端部分

建立一个客户端能够发送消息就可以了,这里是比较基础的东西,没什么好说明的,代码:

private static SocketClientBehaviour _singleton;public static SocketClientBehaviour Singleton{get{if (_singleton == null){_singleton = FindObjectOfType<SocketClientBehaviour>();}return _singleton;}}private const int BUFFER_SIZE = 1024;public InputField myIPv4;public InputField myPort;public GameObject ConPanel;//public string host = "192.168.43.177";//public int port = 8088;string host;int port;private byte[] buffer;private Socket socket;// Use this for initializationvoid Start(){//sendMsg = "Hello server";//socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);//Connect();}public void PressToConnect(){Destroy(ConPanel);host = myIPv4.text;port = int.Parse(myPort.text);socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp);Connect();}private void Connect(){try{socket.Connect(host, port);}catch (Exception e){print(e.Message);}if (socket.Connected){print("Connected");Receive();}else{print("Connect fail");}}private void Receive(){if (!socket.Connected)return;buffer = new byte[BUFFER_SIZE];try{socket.BeginReceive(buffer, 0, BUFFER_SIZE, SocketFlags.None, new AsyncCallback(Receive_Callback), socket);}catch (Exception e){print(e.Message);}}private void Receive_Callback(IAsyncResult ar){if (!socket.Connected){return;}int read = socket.EndReceive(ar);if (read > 0){print(Encoding.UTF8.GetString(buffer));Receive();}}public void Send(string message){if (!socket.Connected)return;byte[] msg = Encoding.UTF8.GetBytes(message);try{socket.Send(msg);}catch(Exception e){print(e.Message);}}

按钮部分

其实手机端最主要的就是按钮部分的制作,我们可以参照键盘按键的工作原理,当按键按下之后电流是通的,我们仿照这个当某个按钮按下之后发送数字“1”,抬起时发送“-1”,按照这个模式来进行数据传输,达到相应的目的,下面是按钮部分的代码:

public void UpKeyDown(){//print("now down 1");Send("1");}public void UpKeyUp(){//print("now up 1");Send("-1");}public void DownKeyDown(){Send("2");}public void DownKeyUp(){Send("-2");}public void LeftKeyDown(){Send("3");}public void LeftKeyUp(){Send("-3");}public void RightKeyDown(){Send("4");}public void RightKeyUp(){Send("-4");}public void SpaceKeyDown(){Send("5");}public void SpaceKeyUp(){Send("-5");}public void PressToQuit(){Application.Quit();}private void OnDisable(){if (socket.Connected){socket.Shutdown(SocketShutdown.Both);socket.Close();}}

基于socket实现虚拟手柄使用手机控制电脑游戏(下)-手机端虚拟手柄相关推荐

  1. 基于socket实现虚拟手柄使用手机控制电脑游戏(上)-电脑服务端

    基于socket实现虚拟手柄使用手机控制电脑游戏(上)-电脑服务端 这个是关于利用socket套接字实现手机控制电脑按键的一个实例,完成这个项目可以实现用手机控制狂野飙车等游戏,就是一个简易的手机虚拟 ...

  2. 用java制作一个软件控制小车_Android手机控制智能小车的手机端程序(完整版)...

    [实例简介] 本程序是我写的Android手机控制智能小车的手机端的全部的源程序,下载后直接就能用. [实例截图] [核心代码] 624ba65e-a75e-4ba0-8e72-6dbc0823fcb ...

  3. 苹果云手机输入虚拟服务器,云虚拟服务器怎么手机控制

    云虚拟服务器怎么手机控制 内容精选 换一换 已经购买成功的云手机或云手游服务器资源,管理控制台上却没有显示.资源不在当前所选区域或项目.登录云手机管理控制台.确认自己购买的服务器所属区域,然后在控制台 ...

  4. 怎么用手机控制电脑?手机控制手机如何实现?

    随着远程控制技术的发展,怎么用手机控制电脑是很多人的疑问.用手机远程控制电脑,通过手机实现对电脑的实时操作,实现手机与电脑同时兼得的效果.本文小编教您怎么用手机控制电脑,希望可以帮助到大家. 怎么用手 ...

  5. 手机控制电脑,在WIFI局域网下(关机,重启,遥控)

    这个软件叫百变遥控:http://blog.sina.com.cn/s/blog_9abc7dbc0101hmut.html 今天周末,在家里看电影,家里用的是台式电脑,我自己买了一个投影仪来专门看视 ...

  6. 手机上计算机怎么设置,手机怎么控制电脑 手机控制电脑设置方法【详解】

    最近,有网友晒出了他用手机控制电脑的图片,小编以为是在装B,结果发现,居然还真的是可以实现这一操作.而想让手机控制电脑变成现实的话,我们需要下载两款非常重要的软件,他们分别是WiFi Mouse的AP ...

  7. 用计算机遥控手机,怎么用手机控制电脑?手机控制手机如何实现?

    随着远程控制技术的发展,怎么用手机控制电脑是很多人的疑问.用手机远程控制电脑,通过手机实现对电脑的实时操作,实现手机与电脑同时兼得的效果.本文小编教您怎么用手机控制电脑,希望可以帮助到大家. 怎么用手 ...

  8. html控制电脑关机,用手机控制电脑关机 方法介绍【图文】

    有时候当你忙完一切上 床 准备睡觉时,却忽然发现远在 客厅 的电脑没有关机,此时你就会很烦,可你又不得不跑出去把电脑关了.如果你能够通过手机远程控制电脑关机,那就可以解决问题了.打开手机,把电脑关了就 ...

  9. 微信有电脑客户端吗_一个小程序,就能让你用手机控制电脑~

    Hello大家好,这里是TopOne软件管家! 现在基本每人必备一个手机和一台电脑,电脑是我们办公所需,但有时候经电脑处理的文件总是忘了转移到U盘或网盘中,人在外想想就难受,那有什么软件可以实现手机控 ...

最新文章

  1. Java项目:嘟嘟图片展览馆管理系统(java+Springboot+SpringMVC+JPA+Jsp+maven+mysql)
  2. Virtual Machine Remote Control Client Plus
  3. python函数参数列表_python函数的列表参数传递
  4. Distributed Transaction Coordinator 服务因 3221229584 (0xC0001010) 服务性错误而停止
  5. 输入法注入源码_将注入进行到底:利用Mono注入C#游戏脚本
  6. String对象中常用的方法
  7. exceptionhandler注解_SpringMVC 中 @ControllerAdvice 注解的三种使用场景!
  8. Swift中viewWeb执行JS
  9. MySQL字符串转日期
  10. struts2 返回html文本,Struts2 s:textfield文本示例
  11. Matlab简单教程:条件分支
  12. oracle 退出循环 使变量清空,[转]Oracle 清除incident和trace -- ADRCI用法
  13. 每日学点python之六(列表与元组)
  14. 《Java I/O》Chapter 1
  15. mac mini调整屏幕亮度
  16. 系统日志及数据库日志
  17. webstorm 扩大内存
  18. 关于东芝步进电机驱动芯片TB67S109AFNAG的电路原理分享
  19. 70行代码撸一个桌面自动翻译神器
  20. 开到370多家线下门店后,特斯拉掉头主攻线上是好事吗?...

热门文章

  1. 一位华为码农的讲述:我来自农村,我看到的真实现状(虐心)
  2. 【等待事件】等待事件系列(5.1)--Enqueue(队列等待)
  3. 数字化校园整体解决方案
  4. Babylonjs npm @babylonjs/gui显示 GUI报错
  5. android浏览器多标签页面,360浏览器HD推出Android版 支持多标签页浏览
  6. 五邑大学c语言编程题,2015五邑大学C语言编程题
  7. 华为荣耀禁用软件更新
  8. 绥化学院2021聋人高考成绩查询,2020聋人高考形势分析
  9. lumion模型材质修改
  10. 在solidworks里在质心处新建坐标系,用于机器人质心惯性矩测量。