static void readCallback(IAsyncResult ar) { StateObject state = (StateObject)ar.AsyncState; Socket handler = state.workSocket; if (!IsSocketConnected(handler)) { handler.Close(); return; } int read = handler.EndReceive(ar); // Data was read from the client socket. if (read > 0) { state.sb.Append(Encoding.UTF8.GetString(state.buffer, 0, read)); Console.WriteLine(state.sb.ToString()); String str = state.sb.ToString(); if (str.IndexOf("*") >= 0 && str.IndexOf("#") >= 0) { String strNoLineBreaks = Regex.Replace(str, @"\r\n?|\n", ""); String[] array = strNoLineBreaks.Replace("*", "").Replace("#", "").Split(','); String sEpc = array[0]; String time = array[1]; String android_id = array[2]; String ckpt_name = array[3]; String position = array[4]; String isChipCode = array[5]; // chip code = 1; bib number = 0; Boolean isBibNo = (isChipCode.Equals("0")) ? true : false; Tag tag = new Tag(sEpc + time + android_id + ckpt_name + position, sEpc, time, android_id, isBibNo); int key = form.ReceiveData(tag, ckpt_name); if (key >= 0) { byte[] byData = System.Text.Encoding.ASCII.GetBytes(position); handler.Send(byData); handler.Close(); form.EpcMapping(key, tag); } else { byte[] byData = System.Text.Encoding.ASCII.GetBytes("-1"); handler.Send(byData); handler.Close(); } } else { handler.BeginReceive(state.buffer, 0, _bufferSize, 0, new AsyncCallback(readCallback), state); } } else { handler.Close(); } }