/// <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(); } }