public override void Awake()
    {
        base.Awake();

        // Get the synchronisation manager from the same component.
        m_SynchronisationManager = GetComponent <SynchronisationManager>();

        GlobalConfig gc = new GlobalConfig();

        gc.ReactorModel       = ReactorModel.FixRateReactor;
        gc.ThreadAwakeTimeout = 10;

        NetworkTransport.Init(gc);
        m_Buffer = new ByteArray(Network.NetworkConst.MAX_PACKET_LEN);

        ConnectionConfig config = new ConnectionConfig();

        m_ReliableChannelID = config.AddChannel(QosType.Reliable);

        HostTopology topo = new HostTopology(config, 10);

        m_SocketID = NetworkTransport.AddHost(topo, 8888);


        Debug.Log("Host established " + m_SocketID);
    }
Exemple #2
0
 public override void Start(object startObject = null)
 {
     base.Start(startObject);
     SynchronisationManager.Instance().SetPeerID(1);
     m_NetworkManager = NetworkManager.Instance();
     m_NetworkManager.RegisterForConnectionEvent(OnConnectionEvent);
     m_NetworkManager.ConnectToAddress(m_GameAddress);
 }
    public override void Update()
    {
        base.Update();
        int  recHostID;
        int  recConnectionID;
        int  recChannelId;
        int  bufferSize = Network.NetworkConst.MAX_PACKET_LEN;
        int  dataSize;
        byte error;

        NetworkEventType networkEvent;

        do
        {
            m_Buffer.Reset();
            networkEvent = NetworkTransport.Receive(out recHostID, out recConnectionID, out recChannelId, m_Buffer.BufferArray, bufferSize, out dataSize, out error);
            if (m_OnConnectionEvent != null && networkEvent != NetworkEventType.Nothing)
            {
                m_OnConnectionEvent(networkEvent, recHostID, recConnectionID);
            }

            switch (networkEvent)
            {
            case NetworkEventType.ConnectEvent:
                Debug.Log("<color=blue>Connection Established</color>");
                OnConnectEvent(recHostID, recConnectionID, recChannelId);
                break;

            case NetworkEventType.DisconnectEvent:
                Debug.Log("<color=red>Disconnect Event</color>");
                break;

            case NetworkEventType.DataEvent:
                //Debug.Log( "<color=blue>Data Received</color>" );
                m_Buffer.ReadHead();
                switch ((PacketHeader)m_Buffer.PacketId)
                {
                case PacketHeader.Test:
                    Debug.Log("<color=red> Test message '" + m_Buffer.ReadString() + "'</color>");
                    break;

                case PacketHeader.Echo:
                    Debug.Log("<color=red> Echo " + m_Buffer.ReadString() + "</color>");
                    break;

                case PacketHeader.SynchroniserMessage:
                    SynchronisationManager.Instance().ReceiveSerialisation(m_Buffer);
                    break;


                default:
                    throw new System.Exception("UNIMPLEMENTED NETWORK HEADER");
                }
                break;

            case NetworkEventType.BroadcastEvent:
                Debug.Log("<color=blue>Broadcast Event</color>");

                break;

            case NetworkEventType.Nothing:
                // Nothing to do.
                break;

            default:
                Debug.LogError("Unknown message type" + networkEvent.ToString());
                break;
            }
        } while(networkEvent != NetworkEventType.Nothing);
    }