基于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. 兔子生兔子递归的理解
  2. 我们参观机器人产业园的感想_工商联组织执常委赴醴陵华鑫电瓷电器产业园交流学习...
  3. Docker最全教程——Redis容器化以及排行榜实战(十三)
  4. 匿名管道 阻塞_Linux系统编程—有名管道
  5. Instagram 在 PyCon 2017 的演讲摘要
  6. flask 路由 php文件,Flask 请求处理流程(一):WSGI 和 路由
  7. 命中率_三分命中率暴涨19%!卡皇进化已无弱项,顶级3D练成何须布拉
  8. EXT.NET复杂布局(四)——系统首页设计(上)
  9. 一个娃娃竟然拍出50万......
  10. 一次面试留下的实际应用问题。关于HttpModule,IIS集成模式。
  11. 一线互联网大厂中高级Java面试真题收录!面试必会
  12. spring boot 支持多少人在线_通过 spring-boot-starter-hbase 集成 HBase
  13. python有趣小程序-小码王分享python一些有趣的小程序
  14. mybatis 依赖于jdbc_mybatis 详解(一)------JDBC
  15. linux怎么查看设备序列号,linux 使用dmidecode查看设备序列号
  16. SpringBoot2.6.5整合CXF框架
  17. java如何对一个表达式开根号_java实现开根号的运算
  18. 【图书馆】——中英文对照表
  19. H5页面的功能和表现形式有哪些
  20. hyper-v自带坑

热门文章

  1. 【AE表达式】更好的动画时间控制
  2. 口算训练java_提高孩子口算能力的5大方法,超实用!(附练习,可打印)
  3. JavaEE颠覆者:spring-boot实战随书源码
  4. 典型公司的典型工程师(from http://forum.eet-cn.com)
  5. RedHat4找不到网卡和mysql启动不了解决方案
  6. 广播系统网络化服务器已停止,校园IP网络广播及标准化考场系统解决方案
  7. 中国内管行业市场供需与战略研究报告
  8. laravel使用php部署工具deployer实战
  9. verilog设计加法器
  10. html如何连接手机文件,手机与电脑间如何进行无线连接进行文件传输?