/// <summary> /// Метод асинхронного получения сообщений /// </summary> /// <param name="result"></param> private void ReceiveCallback(IAsyncResult result) { if (ServerSocket != null && IsListeningStatus) { try { EndPoint point_remote = (EndPoint)result.AsyncState; int read_size = ServerSocket.EndReceiveFrom(result, ref point_remote); if (read_size > 0) { byte[] receive_data = BufferCollector.Resize(Buffer, read_size); CallReceive(point_remote, receive_data); } } catch (Exception ex) { CallErrorServer(ServerErrorType.ReceiveDataError, ex.Message); } finally { Buffer = new byte[SizeBuffer]; EndPoint localEndPoint = new IPEndPoint(IPAddress.Any, Port); ServerSocket.BeginReceiveFrom(Buffer, 0, Buffer.Length, SocketFlags.None, ref localEndPoint, new AsyncCallback(ReceiveCallback), localEndPoint); } } else { Stop(); } }
public void Test2() { var collecor = new BufferCollector(); var arr1 = new byte[] { 1, 2, 3, 4 }; collecor.Append(arr1, arr1.Length); collecor.Clear(); Assert.Empty(collecor.Data); }
public void Test1() { var collecor = new BufferCollector(); var arr1 = new byte[] { 1, 2, 3, 4 }; var arr2 = new byte[] { 5, 6, 7, 8, 9 }; collecor.Append(arr1, arr1.Length); collecor.Append(arr2, arr2.Length); Assert.Equal(new byte[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 }, collecor.Data); }
protected virtual void Dispose(bool disposing) { if (!_disposedValue) { if (disposing) { ClientId = -1; ReadBuffer = new byte[0]; collector.Clear(); } try { socket?.Dispose(); } finally { socket = null; collector = null; _disposedValue = true; } } }