public override void OnReceiveData(ConnectionState state) { byte[] buffer = new byte[1024]; while (state.AvailableData > 0) { int readBytes = state.Read(buffer, 0, 1024); if (readBytes > 0) { _receivedStr += Encoding.UTF8.GetString(buffer, 0, readBytes); if (_receivedStr.IndexOf("<EOF>") >= 0) { int headerStart = _receivedStr.IndexOf("<FILELIST>"); int filelistStart = headerStart + 10; int filelistEnd = _receivedStr.IndexOf("</FILELIST>"); int headerEnd = filelistEnd + 11; int filelistLength = filelistEnd - filelistStart; _filelist = _receivedStr.Substring(filelistStart, filelistLength); _receivedStr = _receivedStr.Remove(0, headerEnd); Console.WriteLine("updateList....."); clientform.updateList(_filelist); int eofStart = _receivedStr.IndexOf("<EOF>"); _receivedStr = _receivedStr.Remove(eofStart, 4); } } else { state.EndConnection(); //If read fails then close connection } } }