public void Parse(string command)
        {
            string[] splitCommand = command.Split(' ');

            try{
                switch (splitCommand[0])
                {
                case Send:
                    Debug.Log(splitCommand[1]);
                    break;

                case Close:
                    Network_Server.ShutDown();
                    break;

                case Begin:
                    if (splitCommand[1].Equals("game"))
                    {
                        ServerMasterManager.instance.BeginGame();
                    }
                    break;

                case Hide:
                    ConsoleSystem.Hide();
                    break;

                default:
                    ConsoleMsgQueue.EnqueMsg("Invalid Command");
                    break;
                }
            }catch (Exception e) {
                ConsoleMsgQueue.EnqueMsg(e.Message);
            }
        }
Exemple #2
0
    private void ReceivingOperation()
    {
        string recStr;

        try{
            while (isConnected)
            {
                recStr = streamReader.ReadLine();

                if (recStr != null)
                {
                    ConsoleMsgQueue.EnqueMsg("Received: " + recStr, 0);
                    ReceiveQueue.EnqueMsg(new NetworkMessage(recStr));
                }
                else
                {
                    isConnected = false;
                }
            }
        }catch (Exception e) {
            ConsoleMsgQueue.EnqueMsg("ReceivingOperation: " + e.Message);
        }

        isConnected = false;
        ConsoleMsgQueue.EnqueMsg("Disconnected.");

        streamReader.Close();
    }
Exemple #3
0
    public void BeginConnection()
    {
        while (isConnected == false)
        {
            try{
                ConsoleMsgQueue.EnqueMsg("Connecting to..." + serverAddress + ":" + PORT);
                tcpClient.Connect(serverAddress, PORT);
                isConnected = true;
            }catch (SocketException e) {
                ConsoleMsgQueue.EnqueMsg("Connection Msg: " + e.SocketErrorCode.ToString());

                Thread.Sleep(4000);
            }catch (Exception e) {
                ConsoleMsgQueue.EnqueMsg(e.ToString());
            }
        }

        ConsoleMsgQueue.EnqueMsg("Connected.");

        networkStream = tcpClient.GetStream();
        streamWriter  = new StreamWriter(networkStream, Encoding.UTF8);
        streamReader  = new StreamReader(networkStream, Encoding.UTF8);

        thread_receive = new Thread(ReceivingOperation);
        thread_receive.Start();
    }
Exemple #4
0
        public static void CloseClient(int idx_)
        {
            arrayClient[idx_] = null;
            lock (freeQueue){
                freeQueue.Enqueue(idx_);
            }

            ServerMasterManager.instance.OnExitClient(idx_);
            ConsoleMsgQueue.EnqueMsg(idx_ + ": Client Thread Closed.");
        }
Exemple #5
0
 public void Send(string str)
 {
     try{
         ConsoleMsgQueue.EnqueMsg(clientId + ": Send: " + str, 0);
         streamWriter.WriteLine(str);
         streamWriter.Flush();
     }catch (Exception e) {
         ConsoleMsgQueue.EnqueMsg(clientId + ": Send: " + e.Message, 1);
         isConnected = false;
     }
 }
Exemple #6
0
        public TcpConnection(Socket socket_, int id_)
        {
            socket = socket_;

            clientId = id_;

            networkStream = new NetworkStream(socket);
            streamReader  = new StreamReader(networkStream, Encoding.UTF8);
            streamWriter  = new StreamWriter(networkStream, Encoding.UTF8);

            thread_receive = new Thread(ReceivingOperation);

            ConsoleMsgQueue.EnqueMsg("Connected: " + clientId);

            isConnected = true;
            thread_receive.Start();
        }
Exemple #7
0
        public static bool AddClient(Socket welcomeSocket_)
        {
            int freeId = GetFreeId();

            if (freeId == -1)
            {
                ConsoleMsgQueue.EnqueMsg("Server Full, Disconnect connection");
                welcomeSocket_.Disconnect(false);
                return(false);
            }
            else
            {
                arrayClient[freeId] = new TcpConnection(welcomeSocket_, freeId);
                ConsoleMsgQueue.EnqueMsg("New Client Connected, ID: " + freeId);

                return(true);
            }
        }
Exemple #8
0
 public void Send(NetworkMessage nm_)
 {
     if (isConnected)
     {
         string str = nm_.ToString();
         try{
             ConsoleMsgQueue.EnqueMsg("Send: " + str, 0);
             streamWriter.WriteLine(str);
             streamWriter.Flush();
         }catch (Exception e) {
             ConsoleMsgQueue.EnqueMsg("Send: " + e.Message);
             isConnected = false;
         }
     }
     else
     {
         ConsoleMsgQueue.EnqueMsg("Send: Network Disconnected.");
     }
 }
    public void Parse(string command)
    {
        string[] splitCommand = command.Split(' ');

        try{
            switch (splitCommand[0])
            {
            case Send:
                Debug.Log(splitCommand[1]);
                break;

            case Disconnect:
                netClient.ShutDown();
                break;

            case Connect:
                if (splitCommand[1].Length < 1)
                {
                    Network_Client.serverAddress = "127.0.0.1";
                }
                else
                {
                    Network_Client.serverAddress = splitCommand[1];
                }
                KingGodClient.instance.Begin();
                break;

            case ConsoleLvl:
                ConsoleMsgQueue.level = int.Parse(splitCommand[1]);
                break;

            case Hide:
                ConsoleSystem.Hide();
                break;

            default:
                ConsoleMsgQueue.EnqueMsg("Invalid Command");
                break;
            }
        }catch (Exception e) {
            ConsoleMsgQueue.EnqueMsg(e.Message);
        }
    }
        private static void WelcomeConnection()
        {
            ipEndPoint  = new IPEndPoint(IPAddress.Any, PORT);
            tcpListener = new TcpListener(ipEndPoint);

            tcpListener.Start();

            ConsoleMsgQueue.EnqueMsg("Waiting for Clients...");
            serverRunning = true;
            while (serverRunning)
            {
                try {
                    Socket welcomeSocket = tcpListener.AcceptSocket();
                    ClientManager.AddClient(welcomeSocket);
                } catch (Exception e) {
                    ConsoleMsgQueue.EnqueMsg("WELCOME CONNECTION: " + e.Message);
                    break;
                }
            }

            ConsoleMsgQueue.EnqueMsg("Welcome Thread Dead.");
        }
Exemple #11
0
    public void Update()
    {
        if (uiSelf.IsShowing)
        {
            if (Input.GetButtonDown("Submit"))
            {
                UserInput();
            }
        }

        int qCount = ConsoleMsgQueue.GetCount();

        for (int loop = 0; loop < qCount; loop++)
        {
            AddText(ConsoleMsgQueue.DequeMsg());
        }

        if (scrollLock)
        {
            scrollBar.value = 0;
        }
    }
Exemple #12
0
        private void IdSync()         //client에게 네트워크에서의 id를 가르쳐주는 과정
        {
            string recStr;

            try{
                while (isConnected)
                {
                    recStr = streamReader.ReadLine();

                    if (recStr != null)
                    {
                        ConsoleMsgQueue.EnqueMsg(clientId + ": Received: " + recStr, 0);
                        NetworkMessage nm = new NetworkMessage(recStr);
                        if (nm.Adress.Attribute.Equals("-1"))                        //발신자 id가 -1이면 클라이언트에게 네트워크 id 전송해줌
                        {
                            NetworkMessage idInfo =
                                new NetworkMessage(
                                    new MsgSegment(MsgSegment.AttrReqId, clientId.ToString()
                                                   )
                                    );
                            Send(idInfo.ToString());
                        }
                        else
                        {
                            break;
                        }
                    }
                    else
                    {
                        isConnected = false;
                    }
                }
            }catch (Exception e) {
                ConsoleMsgQueue.EnqueMsg(clientId + ": IdSync: " + e.Message);
            }

            ConsoleMsgQueue.EnqueMsg(clientId + ": IdSync Done.");
        }
Exemple #13
0
    private IEnumerator NetworkSetup()
    {
        ConsoleMsgQueue.EnqueMsg("Waiting for connection...");
        while (netClient.IsConnected == false)
        {
            yield return(null);
        }

        NetworkMessage msgRequestId =
            new NetworkMessage(new MsgSegment(MsgSegment.AttrReqId, ""));

        while (netClient.NetworkId == -1)
        {
            ConsoleMsgQueue.EnqueMsg("Request Id to Server...");
            netClient.Send(msgRequestId);
            yield return(new WaitForSeconds(3));
        }
        NetworkMessage.SenderId = netClient.NetworkId.ToString();
        netClient.Send(new NetworkMessage(new MsgSegment()));        //id가 갱신되었음을 알리는 빈 메시지 전송

        ConsoleMsgQueue.EnqueMsg("Received Id: " + netClient.NetworkId);

        ClientMasterManager.instance.OnNetworkSetupDone();
    }