ネットワーク機能を使ったアプリケーション間の通信 (Unity)
- 2016.02.14
- Unity
今まで特に注目していませんでしたが、Unity5にネットワーク機能が実装されているということで、少し試してみました。
サーバープログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
using UnityEngine; using System.Collections; using UnityEngine.Networking; using UnityEngine.Networking.NetworkSystem; public class SocketServer : MonoBehaviour { // Use this for initialization void Start () { SetupServer(); } // Update is called once per frame void Update () { } public void SetupServer(){ NetworkServer.Listen("127.0.0.1",2000); NetworkServer.RegisterHandler(MsgType.Connect,OnConnected); NetworkServer.RegisterHandler(888,OnReceive); } public void OnConnected(NetworkMessage netMsg) { Debug.Log("Connected to client"); } public void OnReceive(NetworkMessage netMsg) { Debug.Log("Received"); var recvMsg=netMsg.ReadMessage<StringMessage>(); Debug.Log(recvMsg.value); } } |
クライアントプログラム
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
using UnityEngine; using System.Collections; using UnityEngine.Networking; using UnityEngine.Networking.NetworkSystem; public class socketClients : MonoBehaviour { NetworkClient myClient; // Use this for initialization void Start () { SetupClient(); } // Update is called once per frame void Update () { } class Message:MessageBase{ public string text; } public void SetupClient(){ myClient=new NetworkClient(); myClient.RegisterHandler(MsgType.Connect, OnConnected); myClient.Connect("127.0.0.1", 2000); } public void OnConnected(NetworkMessage netMsg){ Debug.Log("Connected to server"); var myMsg=new StringMessage("test"); myClient.Send(888,myMsg); } public void OnReceive(NetworkMessage netMsg) { Debug.Log(netMsg.ToString()); } } |
基本的に以下のリンク先のドキュメントの応用です。
Unity – マニュアル: ネットワークのクライアントとサーバー
サーバーにクライアントから文字列を送るだけのプログラムですが、最低限、通信は出来ますので問題はないと思います。
上のプログラムはUnityアプリ同士のものですが、本当はC++で書かれたソケット通信用のプログラムと通信したいです。
ちょっと調べただけだと良く分からなかったので、時間があったらもう少し調べて試してみます。
-
前の記事
TensorFlowでディープラーニングを試してみる 2015.12.06
-
次の記事
Leap MotionでMMDモデルに触れたことを検出する 2016.02.28