コード例 #1
0
ファイル: NetManager.cs プロジェクト: relo999/Skilled
    public void SendToClient(NetworkBase.UDPClient Client, byte[] data)
    {
        string stringdata = Encoding.UTF8.GetString(data);

        Debug.Log("Sent: " + (stringdata.StartsWith("<")? "data" : stringdata));
        this.client.Send(data, data.GetLength(0), Client.endPoint);
    }
コード例 #2
0
ファイル: NetManager.cs プロジェクト: relo999/Skilled
    // Use this for initialization
    void Start()
    {
        client = new UdpClient();

        Mainserver = new NetworkBase.UDPClient(IPAddress.Parse(SERVER_IP), SERVER_PORT);
        instance   = this;
    }
コード例 #3
0
ファイル: NetManager.cs プロジェクト: relo999/Skilled
    private void receive(IAsyncResult res)
    {
        IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 8000);

        byte[] received = client.EndReceive(res, ref RemoteIpEndPoint);

        string stringData = Encoding.UTF8.GetString(received);

        Debug.Log("received: " + stringData);
        if (Connectedclient == null && networkBase == null && stringData.Contains(":"))    //it contains a ip:port
        {
            string[] splitData = stringData.Split(':');
            Connectedclient = new NetworkBase.UDPClient(IPAddress.Parse(splitData[0]), int.Parse(splitData[1]));

            /*
             * //if (splitData[2] == "server") StartServer();
             * if (splitData[2] == "client")
             * {
             *  string[] splitIDs = splitData[3].Split(',');
             *  NetworkBase.playerIDs = new int[splitIDs.Length];
             *  for (int i = 0; i < splitIDs.Length; i++)
             *  {
             *      NetworkBase.playerIDs[i] = int.Parse(splitIDs[i]);
             *  }
             *
             *  StartClient();
             *
             * }
             *
             * if(splitData[2] == "server")
             * {
             *  //GameServer server = networkBase as GameServer;
             *  //server.StartGame(new NetworkBase.UDPClient[] { Connectedclient });
             *  string[] splitIDs = splitData[3].Split(',');
             *  NetworkBase.playerIDs = new int[splitIDs.Length];
             *  for (int i = 0; i < splitIDs.Length; i++)
             *  {
             *      NetworkBase.playerIDs[i] = int.Parse(splitIDs[i]);
             *  }
             *
             *  StartServer();
             * }*/

            if (!isServer)
            {
                networkBase.connectedClient = Connectedclient;
            }

            //Debug.Log(NetworkBase.GetLocalIPAddress() + ":" + GetLocalEndPoint());
            //return;
            SendToClient(Connectedclient, Encoding.ASCII.GetBytes("work?"));
            //SendToClient(Mainserver, Encoding.ASCII.GetBytes("test123"));
            //SendToClient(Connectedclient, Encoding.ASCII.GetBytes("work?"));
            //Debug.Log(NetworkBase.GetLocalIPAddress() + ":" + GetLocalEndPoint());
            //this.Start();
        }
        Debug.Log("Started receiving " + (networkBase == null? "netman" : "base") + "..");
        client.BeginReceive(networkBase == null? new AsyncCallback(receive) : new AsyncCallback(networkBase.receiveCallback), client);
    }
コード例 #4
0
ファイル: GameClient.cs プロジェクト: relo999/Skilled
    public override void receiveCallback(IAsyncResult res)
    {
        IPEndPoint RemoteIpEndPoint = new IPEndPoint(IPAddress.Any, 8000);

        byte[] received = serverClient.EndReceive(res, ref RemoteIpEndPoint);
        serverClient.BeginReceive(new AsyncCallback(receiveCallback), null);

        string stringData = Encoding.ASCII.GetString(received);

        testFloat = 1;
        if (!stringData.StartsWith("<")) //testing only
        {
            Debug.Log(stringData);
        }
        if (!isReady && stringData.Contains(":"))    //it contains a ip:port
        {
            testFloat = 2;
            string[] splitData = stringData.Split(':');
            connectedClient = new NetworkBase.UDPClient(IPAddress.Parse(splitData[0]), int.Parse(splitData[1]));

            NetworkBase.playerIDs = new int[controllingPlayers];
            int otherPlayers = int.Parse(splitData[2]);
            for (int i = 0; i < controllingPlayers; i++)
            {
                NetworkBase.playerIDs[i] = otherPlayers + i;
            }
            byte[] data = Encoding.ASCII.GetBytes("test123");
            SendToClient(connectedClient, data);
            StartTestConnection();
            testFloat = 3;
        }
        testFloat = 8;

        if (stringData == "TestConnection")
        {
            connectionSucces = true;
        }

        if (stringData == "StartGame")
        {
            testFloat             = 9;
            isReady               = true;
            NetManager.hasStarted = true;
        }
        //Debug.Log("received client: " + (stringData.StartsWith("<")? "data" : stringData));

        //ping, in progress
        if (stringData == "PingResult")
        {
            testFloat = 10;
            receivedPackets--;

            receivedPing = true;

            isPinging   = false;
            startedPing = false;
        }
        else
        {
            testFloat = 11;
            if (stringData.StartsWith("<"))
            {
                testFloat = 61;
                testFloat = received.Length;
                SerializeBase SB = DeserializeClass(received);
                testFloat = 63;
                HandleSerializedData(SB);
                testFloat = 62;
            }
        }
        //receiveCallback(res);
        testFloat = 4;
        //Debug.Log("started receiving..");
        receivedPackets++;
        //serverClient.BeginReceive(new AsyncCallback(receiveCallback), null);
    }