private void ReceiveDataFromSocketCallback(IAsyncResult asyncResult) { try { StateObjectDTO state = (StateObjectDTO)asyncResult.AsyncState; Socket client = state.workSocket; if (!client.Connected) { client.EndReceive(asyncResult); _receiveDone.Set(); return; } int bytesRead = client.EndReceive(asyncResult); if (bytesRead > 0) { if (state.stringBuilder.Length == 0) { state.stringBuilder.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead)); client.BeginReceive(state.buffer, 0, StateObjectDTO.BufferSize, 0, new AsyncCallback(ReceiveDataFromSocketCallback), state); return; } string currentData = state.stringBuilder.ToString().Substring(state.stringBuilder.ToString().IndexOf("INIVARS0$"), state.stringBuilder.ToString().IndexOf("$FINVARS") + 8); string[] currentDataArr = currentData.Split('$'); List <string> currentDataList = currentDataArr.ToList(); currentDataList.Remove("INIVARS0"); currentDataList.Remove("FINVARS"); for (int i = 0; i < currentDataList.Count; i++) { _dataTable.Rows.Add(null, currentDataList[i], DateTime.Now); _dataBase.InserDataProcedure(currentDataList[i], DateTime.Now); } state.stringBuilder.Append(Encoding.ASCII.GetString(state.buffer, 0, bytesRead)); client.BeginReceive(state.buffer, 0, StateObjectDTO.BufferSize, 0, new AsyncCallback(ReceiveDataFromSocketCallback), state); } else { client.EndReceive(asyncResult); _receiveDone.Set(); } } catch (Exception e) { MessageBox.Show("A ocurrido un error recibiendo los datos"); } }
private void ReceiveDataFromSocket() { try { StateObjectDTO state = new StateObjectDTO(); state.workSocket = _socket; _socket.BeginReceive(state.buffer, 0, StateObjectDTO.BufferSize, 0, new AsyncCallback(ReceiveDataFromSocketCallback), state); } catch (Exception e) { MessageBox.Show("A ocurrido un error recibiendo los datos"); } }
private void CloseConnection() { try { StateObjectDTO state = new StateObjectDTO(); state.workSocket = _socket; _socket.BeginDisconnect(false, new AsyncCallback(CloseConnectionCallback), state); _closeDone.WaitOne(); } catch (Exception ex) { MessageBox.Show("A ocurrido un error terminando la conexión"); } }
private void CloseConnectionCallback(IAsyncResult asyncResult) { try { StateObjectDTO state = (StateObjectDTO)asyncResult.AsyncState; Socket client = state.workSocket; client.EndDisconnect(asyncResult); lbl_con_result.Text = "Conexión cerrada"; client.Disconnect(false); _closeDone.Set(); } catch (Exception e) { MessageBox.Show("A ocurrido un error terminando la conexión"); } }