//If a Client is connected to the Server, it gets a callback //This is an endless method until the client disconnects private void OnReceiveData(IAsyncResult result) { try { int length = stream.EndRead(result); if (length <= 0) { CloseConnection(socket); return; } byte[] newBytes = new byte[length]; Array.Copy(recBuffer, newBytes, length); ServerHandleData.HandleData(connectionID, newBytes); stream.BeginRead(recBuffer, 0, socket.ReceiveBufferSize, OnReceiveData, null); } catch (ObjectDisposedException clientHasDisconnected) { stream.Close(); socket.Close(); ClientManager.client.Remove(connectionID); return; } catch (Exception unknownDisconnect) { Console.WriteLine(unknownDisconnect); ClientManager.client.Remove(connectionID); CloseConnection(socket); return; } }
//Adds all available Packets of the Client and starts accepting Clients public static void InititalizeNetwork() { Console.WriteLine("Initializing Packets ..."); ServerHandleData.InitializePackets(); serverSocket.Start(); serverSocket.BeginAcceptTcpClient(new AsyncCallback(OnClientConnect), null); }