Esempio n. 1
0
 /// <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);
        }
Esempio n. 4
0
 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;
         }
     }
 }