public EndReceive ( IAsyncResult asyncResult ) : int | ||
asyncResult | IAsyncResult | |
Результат | int |
private void ReceiveCallback(IAsyncResult ar) { int length = (int)ar.AsyncState; try { var bytesRead = _socket.EndReceive(ar); if (bytesRead == 0) { OnFinish(length); return; } length += bytesRead; int i; while ((i = IndexOf(_lineBuffer, _bufferIndex, length, _delimiterBytes, _delimiterSearchOffsetTable, _delimiterSearchCharTable)) != -1) { var decodeLen = i - _bufferIndex; string line = _encoding.GetString(_lineBuffer, _bufferIndex, decodeLen); _bufferIndex = i + _delimiterBytes.Length; length -= decodeLen; length -= _delimiterBytes.Length; var stop = _onLineRead(line, _state); if (stop) { OnFinish(length); return; } } if (length == _lineBuffer.Length) { OnException(new IndexOutOfRangeException("LineBuffer full! Try increace maxLineBytes!")); OnFinish(length); return; } if (_bufferIndex > 0) { Buffer.BlockCopy(_lineBuffer, _bufferIndex, _lineBuffer, 0, length); _bufferIndex = 0; } _socket.BeginReceive(_lineBuffer, length, _lineBuffer.Length - length, 0, ReceiveCallback, length); } catch (Exception ex) { OnException(ex); OnFinish(length); } }
private void ReceiveCallback(IAsyncResult ar) { try { var bytesRead = _socket.EndReceive(ar); if (bytesRead == 0) { OnFinish(); return; } _bufferDataLength += bytesRead; NewPackageRecv(); } catch (Exception ex) { OnException(ex); OnFinish(); } }