public static void ClientTalk(SslStream clientStream) { while (true) { try { //blocks until a client sends a message var result = GetMessageFromClient(clientStream); switch (result) { case "LOOK UP SINGLE HASH": // Send go ahead SendMessageToClient(clientStream, "200 OK"); var hash = GetMessageFromClient(clientStream); if (hash.Length >= 32) { // create a new process so the client can send a new request Task.Run(() => { try { var hashToCheck = GetMessageFromClient(clientStream); var newScanner = new Scanner.Scanner(); var isFileClear = newScanner.ScanFile(hashToCheck); } catch (Exception) { SendMessageToClient(clientStream, "901 FAIL"); } }); } break; case "LOOK UP STARTUPFILES": break; case "IS CLIENT ALIVE": // check Connection break; default: SendMessageToClient(clientStream, "900 FAIL"); break; } } catch { //a socket error has occured break; } } }