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); } }
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(); }
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(); }
public static void CloseClient(int idx_) { arrayClient[idx_] = null; lock (freeQueue){ freeQueue.Enqueue(idx_); } ServerMasterManager.instance.OnExitClient(idx_); ConsoleMsgQueue.EnqueMsg(idx_ + ": Client Thread Closed."); }
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; } }
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(); }
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); } }
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."); }
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; } }
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."); }
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(); }